[pypy-svn] r22238 - pypy/dist/pypy/translator/backendopt

arigo at codespeak.net arigo at codespeak.net
Mon Jan 16 21:46:40 CET 2006


Author: arigo
Date: Mon Jan 16 21:46:38 2006
New Revision: 22238

Modified:
   pypy/dist/pypy/translator/backendopt/escape.py
Log:
- typoish bug fix
- direct uses of popitem() and update() -- in particular,
  iterkeys().next() followed by pop() is extremely inefficient
  (wrong complexity!)


Modified: pypy/dist/pypy/translator/backendopt/escape.py
==============================================================================
--- pypy/dist/pypy/translator/backendopt/escape.py	(original)
+++ pypy/dist/pypy/translator/backendopt/escape.py	Mon Jan 16 21:46:38 2006
@@ -140,7 +140,7 @@
             if isonheap(block.inputargs[0]):
                 changed = self.getstate(block.inputargs[0]).setescapes()
                 self.handle_changed(changed)
-            if isonheap(block.inputargs[0]):
+            if isonheap(block.inputargs[1]):
                 changed = self.getstate(block.inputargs[1]).setescapes()
                 self.handle_changed(changed)
             return
@@ -188,16 +188,14 @@
         
     def complete(self):
         while self.scheduled:
-            block = self.scheduled.iterkeys().next()
-            graph = self.scheduled.pop(block)
+            block, graph = self.scheduled.popitem()
             self.flow_block(block, graph)
 
     def handle_changed(self, changed):
         for crep in changed:
             if crep not in self.dependencies:
                 continue
-            for block, graph in self.dependencies[crep].iteritems():
-                self.scheduled[block] = graph
+            self.scheduled.update(self.dependencies[crep])
 
     def register_block_dependency(self, state, block=None, graph=None):
         if block is None:



More information about the Pypy-commit mailing list