Author: Hakan Ardo <[email protected]>
Branch: jit-targets
Changeset: r50384:4c3b1c0a071a
Date: 2011-12-11 14:23 +0100
http://bitbucket.org/pypy/pypy/changeset/4c3b1c0a071a/

Log:    a bit more cloning to get a short_preamble for the fallback that
        does not contain ops from the failed optimization attempt

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
@@ -207,6 +207,7 @@
                       [h_ops[i].clone() for i in range(start, len(h_ops))] + \
                       [ResOperation(rop.JUMP, jumpargs, None, 
descr=loop_jitcell_token)]
     label = part.operations[0]
+    orignial_label = label.clone()
     assert label.getopnum() == rop.LABEL
     try:
         optimize_trace(metainterp_sd, part, jitdriver_sd.warmstate.enable_opts)
@@ -216,12 +217,13 @@
         target_token = label.getdescr()
         assert isinstance(target_token, TargetToken)
         assert target_token.exported_state
-        part.operations = [label] + \
+        part.operations = [orignial_label] + \
                           [ResOperation(rop.JUMP, 
target_token.exported_state.jump_args,
                                         None, descr=loop_jitcell_token)]
         try:
             optimize_trace(metainterp_sd, part, 
jitdriver_sd.warmstate.enable_opts,
                            inline_short_preamble=False)
+            
         except InvalidLoop:
             return None
     assert part.operations[-1].getopnum() != rop.LABEL
diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py 
b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -188,7 +188,7 @@
             return
         self.did_import = True
         
-        self.short = target_token.short_preamble
+        self.short = target_token.short_preamble[:]
         self.short_seen = {}
         self.short_boxes = exported_state.short_boxes.clone()
         for box, const in exported_state.constant_inputargs.items():
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to