[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