Commit f6cb1da9 authored by Stefan Behnel's avatar Stefan Behnel

avoid calling TupleNode.allocate_temps() in iter-dict transform

parent 87c39bdb
...@@ -51,7 +51,6 @@ class DictIterTransform(Visitor.VisitorTransform): ...@@ -51,7 +51,6 @@ class DictIterTransform(Visitor.VisitorTransform):
return node return node
dict_obj = function.obj dict_obj = function.obj
method = function.attribute method = function.attribute
env = self.env_stack[-1]
keys = values = False keys = values = False
if method == 'iterkeys': if method == 'iterkeys':
...@@ -121,12 +120,20 @@ class DictIterTransform(Visitor.VisitorTransform): ...@@ -121,12 +120,20 @@ class DictIterTransform(Visitor.VisitorTransform):
stats = [node.body]) stats = [node.body])
if tuple_target: if tuple_target:
tuple_result = ExprNodes.TupleNode( temp = UtilNodes.TempHandle(py_object_ptr)
temps.append(temp)
temp_tuple = temp.ref(tuple_target.pos)
class TempTupleNode(ExprNodes.TupleNode):
# FIXME: remove this after result-code refactoring
def result(self):
return temp_tuple.result()
tuple_result = TempTupleNode(
pos = tuple_target.pos, pos = tuple_target.pos,
args = [key_cast, value_cast] args = [key_cast, value_cast],
is_temp = 1,
type = Builtin.tuple_type,
) )
tuple_result.analyse_types(env)
tuple_result.allocate_temps(env)
body.stats.insert(0, Nodes.SingleAssignmentNode( body.stats.insert(0, Nodes.SingleAssignmentNode(
pos = tuple_target.pos, pos = tuple_target.pos,
lhs = tuple_target, lhs = tuple_target,
...@@ -174,17 +181,6 @@ class DictIterTransform(Visitor.VisitorTransform): ...@@ -174,17 +181,6 @@ class DictIterTransform(Visitor.VisitorTransform):
stats = result_code stats = result_code
)) ))
def visit_ModuleNode(self, node):
self.env_stack = [node.scope]
self.visitchildren(node)
return node
def visit_FuncDefNode(self, node):
self.env_stack.append(node.local_scope)
self.visitchildren(node)
self.env_stack.pop()
return node
def visit_Node(self, node): def visit_Node(self, node):
self.visitchildren(node) self.visitchildren(node)
return node return node
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment