[pypy-commit] pypy jit-usable_retrace_3: fallback properly on late failures

hakanardo noreply at buildbot.pypy.org
Sat Dec 29 15:41:36 CET 2012


Author: Hakan Ardo <hakan at 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 = {}


More information about the pypy-commit mailing list