[pypy-svn] r26908 - pypy/dist/pypy/translator/backendopt
cfbolz at codespeak.net
cfbolz at codespeak.net
Sat May 6 23:35:22 CEST 2006
Author: cfbolz
Date: Sat May 6 23:35:21 2006
New Revision: 26908
Modified:
pypy/dist/pypy/translator/backendopt/propagate.py
Log:
remove usage of visit
Modified: pypy/dist/pypy/translator/backendopt/propagate.py
==============================================================================
--- pypy/dist/pypy/translator/backendopt/propagate.py (original)
+++ pypy/dist/pypy/translator/backendopt/propagate.py Sat May 6 23:35:21 2006
@@ -202,17 +202,21 @@
analyzer = CanfoldAnalyzer(translator)
lli = LLInterpreter(translator.rtyper)
entrymap = mkentrymap(graph)
- def visit(block):
- if (not isinstance(block, Block) or block is graph.startblock or
- block is graph.returnblock or block is graph.exceptblock):
- return
+ for block in graph.iterblocks():
+ if (block is graph.startblock or block is graph.returnblock or
+ block is graph.exceptblock):
+ continue
usedvars = {}
+ cannotfold = False
for op in block.operations:
if analyzer.analyze(op):
- return
+ cannotfold = True
+ break
for arg in op.args:
if (isinstance(arg, Variable) and arg in block.inputargs):
usedvars[arg] = True
+ if cannotfold:
+ continue
if isinstance(block.exitswitch, Variable):
usedvars[block.exitswitch] = True
pattern = [arg in usedvars for arg in block.inputargs]
@@ -250,13 +254,8 @@
link.args = newargs
checkgraph(graph)
if not unchanged:
- raise ValueError
- try:
- traverse(visit, graph)
- except ValueError:
- return True
- else:
- return False
+ return True
+ return False
def partial_folding(graph, translator):
"""this function does constant folding in the following situation:
More information about the Pypy-commit
mailing list