[pypy-svn] r38146 - pypy/dist/pypy/translator/llvm

mwh at codespeak.net mwh at codespeak.net
Thu Feb 8 15:34:52 CET 2007


Author: mwh
Date: Thu Feb  8 15:34:51 2007
New Revision: 38146

Modified:
   pypy/dist/pypy/translator/llvm/funcnode.py
Log:
a while-i-was-here rewrite to not use flowmodel.traverse and to not use map()
when the applied function doesn't have a return value.


Modified: pypy/dist/pypy/translator/llvm/funcnode.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/funcnode.py	(original)
+++ pypy/dist/pypy/translator/llvm/funcnode.py	Thu Feb  8 15:34:51 2007
@@ -1,5 +1,5 @@
 from pypy.objspace.flow.model import Block, Constant, Link
-from pypy.objspace.flow.model import mkentrymap, traverse, c_last_exception
+from pypy.objspace.flow.model import mkentrymap, c_last_exception
 from pypy.rpython.lltypesystem import lltype
 from pypy.translator.llvm.node import LLVMNode, ConstantLLVMNode
 from pypy.translator.llvm.opwriter import OpWriter
@@ -48,21 +48,21 @@
 
     def __str__(self):
         return "<FuncNode %r>" %(self.ref,)
-    
+
     def setup(self):
-        def visit(node):
-            if isinstance(node, Link):
-                map(self.db.prepare_arg, node.args)
-            elif isinstance(node, Block):
-                block = node
-                map(self.db.prepare_arg, block.inputargs)
-                for op in block.operations:
-                    map(self.db.prepare_arg, op.args)
-                    self.db.prepare_arg(op.result)
-                    assert block.exitswitch != c_last_exception
-                                            
         assert self.graph, "cannot traverse"
-        traverse(visit, self.graph)
+        prepare_arg = self.db.prepare_arg
+        for block in self.graph.iterblocks():
+            for arg in block.inputargs:
+                prepare_arg(arg)
+            for op in block.operations:
+                for arg in op.args:
+                    prepare_arg(arg)
+                prepare_arg(op.result)
+            assert block.exitswitch != c_last_exception
+            for link in block.exits:
+                for arg in link.args:
+                    prepare_arg(arg)
 
     # ______________________________________________________________________
     # main entry points from genllvm 



More information about the Pypy-commit mailing list