[pypy-svn] rev 2556 - pypy/trunk/src/pypy/translator

arigo at codespeak.net arigo at codespeak.net
Fri Dec 19 13:29:12 CET 2003


Author: arigo
Date: Fri Dec 19 13:29:12 2003
New Revision: 2556

Modified:
   pypy/trunk/src/pypy/translator/annrpython.py
Log:
Added the dependency tracking and block reflowing.
XXX Needs to be tested explicitely.


Modified: pypy/trunk/src/pypy/translator/annrpython.py
==============================================================================
--- pypy/trunk/src/pypy/translator/annrpython.py	(original)
+++ pypy/trunk/src/pypy/translator/annrpython.py	Fri Dec 19 13:29:12 2003
@@ -62,7 +62,7 @@
 
     #___ medium-level interface ____________________________
 
-    def addpendingblock(self, block, cells):
+    def addpendingblock(self, block, cells=None):
         """Register an entry point into block with the given input cells."""
         self.pendingblocks.append((block, cells))
 
@@ -158,7 +158,7 @@
                 # When flowin succeeds, i.e. when the analysis progress,
                 # we can tentatively re-schedlue the delayed blocks.
                 for block in self.delayedblocks:
-                    self.pendingblocks.append((block, None))
+                    self.addpendingblock(block)
                 del self.delayedblocks[:]
 
     def bindinputargs(self, block, inputcells):
@@ -185,8 +185,10 @@
                 return
 
     def flowin(self, block):
+        self.heap.enter(block, self.addpendingblock)
         for op in block.operations:
             self.consider_op(op)
+        self.heap.leave()
         for link in block.exits:
             cells = [self.binding(a) for a in link.args]
             self.addpendingblock(link.target, cells)


More information about the Pypy-commit mailing list