[pypy-commit] pypy optresult: kill infos on operations. fix failargs while in rewrite

fijal noreply at buildbot.pypy.org
Fri May 29 13:41:07 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77681:07cdcc8c47f9
Date: 2015-05-28 16:58 +0200
http://bitbucket.org/pypy/pypy/changeset/07cdcc8c47f9/

Log:	kill infos on operations. fix failargs while in rewrite

diff --git a/rpython/jit/backend/llsupport/rewrite.py b/rpython/jit/backend/llsupport/rewrite.py
--- a/rpython/jit/backend/llsupport/rewrite.py
+++ b/rpython/jit/backend/llsupport/rewrite.py
@@ -95,6 +95,11 @@
                     op = op.copy_and_change(op.getopnum())
                     replaced = True
                 op.setarg(i, arg)
+        if op.is_guard():
+            if not replaced:
+                op = op.copy_and_change(op.getopnum())
+            op.setfailargs([self.get_box_replacement(a)
+                            for a in op.getfailargs()])
         self._newops.append(op)
 
     def replace_op_with(self, op, newop):
diff --git a/rpython/jit/metainterp/compile.py b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -333,7 +333,13 @@
                                             original_loop_token, log=log,
                                             logger=metainterp_sd.logger_ops)
 
+def forget_optimization_info(lst):
+    for item in lst:
+        item.set_forwarded(None)
+
 def send_loop_to_backend(greenkey, jitdriver_sd, metainterp_sd, loop, type):
+    forget_optimization_info(loop.operations)
+    forget_optimization_info(loop.inputargs)
     vinfo = jitdriver_sd.virtualizable_info
     if vinfo is not None:
         patch_new_loop_to_load_virtualizable_fields(loop, jitdriver_sd)
@@ -388,6 +394,8 @@
 
 def send_bridge_to_backend(jitdriver_sd, metainterp_sd, faildescr, inputargs,
                            operations, original_loop_token):
+    forget_optimization_info(operations)
+    forget_optimization_info(inputargs)
     if not we_are_translated():
         show_procedures(metainterp_sd)
         seen = dict.fromkeys(inputargs)


More information about the pypy-commit mailing list