Author: Hakan Ardo <ha...@debian.org>
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
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to