Author: Hakan Ardo <[email protected]>
Branch: jit-usable_retrace_3
Changeset: r59619:2081b6a297d5
Date: 2012-12-29 15:36 +0100
http://bitbucket.org/pypy/pypy/changeset/2081b6a297d5/
Log: fallback properly on late failures
diff --git a/pypy/jit/metainterp/compile.py b/pypy/jit/metainterp/compile.py
--- a/pypy/jit/metainterp/compile.py
+++ b/pypy/jit/metainterp/compile.py
@@ -244,12 +244,16 @@
try:
optimize_trace(metainterp_sd, preamble,
jitdriver_sd.warmstate.enable_opts)
except InvalidLoop:
- assert False
+ assert loop_jitcell_token.target_tokens.pop() is
loop.operations[0].getdescr()
+ raise InvalidLoop
assert loop.operations[0].getopnum() == rop.LABEL
assert preamble.operations[0].getopnum() == rop.LABEL
jumpop = preamble.operations[-1]
assert jumpop.getopnum() == rop.JUMP
+ if jumpop.getdescr() is not loop.operations[0].getdescr():
+ assert loop_jitcell_token.target_tokens.pop() is
loop.operations[0].getdescr()
+ raise InvalidLoop
preamble.operations = preamble.operations[1:-1]
usedboxes = {}
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit