[pypy-svn] r79727 - pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt
hakanardo at codespeak.net
hakanardo at codespeak.net
Wed Dec 1 21:46:36 CET 2010
Author: hakanardo
Date: Wed Dec 1 21:46:33 2010
New Revision: 79727
Modified:
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
Log:
Replacements mode that replaces the long preamble with the short now working again
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py Wed Dec 1 21:46:33 2010
@@ -101,12 +101,20 @@
if False:
# FIXME: This should save some memory but requires
# a lot of tests to be fixed...
- loop.preamble.operations = short
- short_loop = loop.preamble
- else:
- short_loop = TreeLoop('short preamble')
- short_loop.inputargs = loop.preamble.inputargs[:]
- short_loop.operations = short
+ loop.preamble.operations = short[:]
+
+ # Turn guards into conditional jumps to the preamble
+ for i in range(len(short)):
+ op = short[i]
+ if op.is_guard():
+ op = op.clone()
+ op.setfailargs(loop.preamble.inputargs)
+ op.setjumptarget(loop.preamble.token)
+ short[i] = op
+
+ short_loop = TreeLoop('short preamble')
+ short_loop.inputargs = loop.preamble.inputargs[:]
+ short_loop.operations = short
assert isinstance(loop.preamble.token, LoopToken)
if loop.preamble.token.short_preamble:
@@ -269,6 +277,7 @@
"at position: ", preamble_i)
return None
short_preamble.append(op)
+
state.update(op)
preamble_i += 1
@@ -317,15 +326,6 @@
if op.result:
seen[op.result] = True
- # Turn guards into conditional jumps to the preamble
- for i in range(len(short_preamble)):
- op = short_preamble[i]
- if op.is_guard():
- op = op.clone()
- op.setfailargs(preamble.inputargs)
- op.setjumptarget(preamble.token)
- short_preamble[i] = op
-
return short_preamble
class ExeState(object):
More information about the Pypy-commit
mailing list