[pypy-commit] pypy jit-leaner-frontend: yay, fix the retracing

fijal pypy.commits at gmail.com
Wed Mar 9 07:13:32 EST 2016


Author: fijal
Branch: jit-leaner-frontend
Changeset: r82902:ed279ae0f4f6
Date: 2016-03-09 13:35 +0200
http://bitbucket.org/pypy/pypy/changeset/ed279ae0f4f6/

Log:	yay, fix the retracing

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
@@ -338,7 +338,7 @@
 
     end_label = ResOperation(rop.LABEL, inputargs[:],
                              descr=loop_jitcell_token)
-    cut_pos = history.get_trace_position()
+    #cut_pos = history.get_trace_position()
     history.record(rop.JUMP, jumpargs[:], None, descr=loop_jitcell_token)
     enable_opts = jitdriver_sd.warmstate.enable_opts
     call_pure_results = metainterp.call_pure_results
diff --git a/rpython/jit/metainterp/opencoder.py b/rpython/jit/metainterp/opencoder.py
--- a/rpython/jit/metainterp/opencoder.py
+++ b/rpython/jit/metainterp/opencoder.py
@@ -63,12 +63,16 @@
         if force_inputargs is not None:
             self.inputargs = [rop.inputarg_from_tp(arg.type) for
                               arg in force_inputargs]
+            self._inputargs = [None] * len(force_inputargs)
             for i, arg in enumerate(force_inputargs):
                 if arg.position >= 0:
                     self._cache[arg.position] = self.inputargs[i]
+                else:
+                    self._inputargs[-arg.position-1] = self.inputargs[i]
         else:
             self.inputargs = [rop.inputarg_from_tp(arg.type) for
                               arg in self.trace.inputargs]
+            self._inputargs = self.inputargs[:]
         self.start = start
         self.pos = start
         self._count = 0
@@ -76,7 +80,7 @@
 
     def _get(self, i):
         if i < 0:
-            return self.inputargs[-i - 1]
+            return self._inputargs[-i - 1]
         res = self._cache[i]
         assert res is not None
         return res
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_util.py b/rpython/jit/metainterp/optimizeopt/test/test_util.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_util.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_util.py
@@ -454,6 +454,10 @@
         def log_loop(*args, **kwds):
             pass
 
+        @classmethod
+        def log_loop_from_trace(*args, **kwds):
+            pass
+
     class logger_ops:
         repr_of_resop = repr
 


More information about the pypy-commit mailing list