cython-devel
changeset 1347:4a4a4eba9cd6
avoid calling TupleNode.allocate_temps() in iter-dict transform
| author | Stefan Behnel <scoder@users.berlios.de> |
|---|---|
| date | Tue Nov 18 19:36:29 2008 +0100 (4 years ago) |
| parents | cc9e5ead50d1 |
| children | da561ec3162a |
| files | Cython/Compiler/Optimize.py |
line diff
1.1 --- a/Cython/Compiler/Optimize.py Mon Nov 17 14:35:05 2008 +0100
1.2 +++ b/Cython/Compiler/Optimize.py Tue Nov 18 19:36:29 2008 +0100
1.3 @@ -51,7 +51,6 @@
1.4 return node
1.5 dict_obj = function.obj
1.6 method = function.attribute
1.7 - env = self.env_stack[-1]
1.8
1.9 keys = values = False
1.10 if method == 'iterkeys':
1.11 @@ -121,12 +120,20 @@
1.12 stats = [node.body])
1.13
1.14 if tuple_target:
1.15 - tuple_result = ExprNodes.TupleNode(
1.16 + temp = UtilNodes.TempHandle(py_object_ptr)
1.17 + temps.append(temp)
1.18 + temp_tuple = temp.ref(tuple_target.pos)
1.19 + class TempTupleNode(ExprNodes.TupleNode):
1.20 + # FIXME: remove this after result-code refactoring
1.21 + def result(self):
1.22 + return temp_tuple.result()
1.23 +
1.24 + tuple_result = TempTupleNode(
1.25 pos = tuple_target.pos,
1.26 - args = [key_cast, value_cast]
1.27 + args = [key_cast, value_cast],
1.28 + is_temp = 1,
1.29 + type = Builtin.tuple_type,
1.30 )
1.31 - tuple_result.analyse_types(env)
1.32 - tuple_result.allocate_temps(env)
1.33 body.stats.insert(0, Nodes.SingleAssignmentNode(
1.34 pos = tuple_target.pos,
1.35 lhs = tuple_target,
1.36 @@ -174,17 +181,6 @@
1.37 stats = result_code
1.38 ))
1.39
1.40 - def visit_ModuleNode(self, node):
1.41 - self.env_stack = [node.scope]
1.42 - self.visitchildren(node)
1.43 - return node
1.44 -
1.45 - def visit_FuncDefNode(self, node):
1.46 - self.env_stack.append(node.local_scope)
1.47 - self.visitchildren(node)
1.48 - self.env_stack.pop()
1.49 - return node
1.50 -
1.51 def visit_Node(self, node):
1.52 self.visitchildren(node)
1.53 return node
