[pypy-commit] pypy remove-globals-in-jit: progress

arigo noreply at buildbot.pypy.org
Wed Nov 14 16:43:29 CET 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: remove-globals-in-jit
Changeset: r58895:7cc2d162d930
Date: 2012-11-14 16:43 +0100
http://bitbucket.org/pypy/pypy/changeset/7cc2d162d930/

Log:	progress

diff --git a/pypy/jit/backend/llgraph/runner.py b/pypy/jit/backend/llgraph/runner.py
--- a/pypy/jit/backend/llgraph/runner.py
+++ b/pypy/jit/backend/llgraph/runner.py
@@ -233,7 +233,7 @@
 
     def get_latest_value_int(self, deadframe, index):
         v = deadframe._values[index]
-        assert isinstance(v, int)
+        assert lltype.typeOf(v) == lltype.Signed
         return v
 
     def get_latest_value_ref(self, deadframe, index):
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
@@ -527,7 +527,7 @@
             self._counter = cnt | i
 
     def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd):
-        if self.must_compile(metainterp_sd, jitdriver_sd):
+        if self.must_compile(deadframe, metainterp_sd, jitdriver_sd):
             self.start_compiling()
             try:
                 self._trace_and_compile_from_bridge(deadframe, metainterp_sd,
@@ -550,7 +550,7 @@
         metainterp.handle_guard_failure(self, deadframe)
     _trace_and_compile_from_bridge._dont_inline_ = True
 
-    def must_compile(self, metainterp_sd, jitdriver_sd):
+    def must_compile(self, deadframe, metainterp_sd, jitdriver_sd):
         trace_eagerness = jitdriver_sd.warmstate.trace_eagerness
         #
         if self._counter <= self.CNT_BASE_MASK:
@@ -570,21 +570,24 @@
             typetag = self._counter & self.CNT_TYPE_MASK
             counters = self._counters
             if typetag == self.CNT_INT:
-                intvalue = metainterp_sd.cpu.get_latest_value_int(index)
+                intvalue = metainterp_sd.cpu.get_latest_value_int(
+                    deadframe, index)
                 if counters is None:
                     self._counters = counters = ResumeGuardCountersInt()
                 else:
                     assert isinstance(counters, ResumeGuardCountersInt)
                 counter = counters.see_int(intvalue)
             elif typetag == self.CNT_REF:
-                refvalue = metainterp_sd.cpu.get_latest_value_ref(index)
+                refvalue = metainterp_sd.cpu.get_latest_value_ref(
+                    deadframe, index)
                 if counters is None:
                     self._counters = counters = ResumeGuardCountersRef()
                 else:
                     assert isinstance(counters, ResumeGuardCountersRef)
                 counter = counters.see_ref(refvalue)
             elif typetag == self.CNT_FLOAT:
-                floatvalue = metainterp_sd.cpu.get_latest_value_float(index)
+                floatvalue = metainterp_sd.cpu.get_latest_value_float(
+                    deadframe, index)
                 if counters is None:
                     self._counters = counters = ResumeGuardCountersFloat()
                 else:
diff --git a/pypy/jit/metainterp/resume.py b/pypy/jit/metainterp/resume.py
--- a/pypy/jit/metainterp/resume.py
+++ b/pypy/jit/metainterp/resume.py
@@ -1240,7 +1240,7 @@
         else:
             assert tag == TAGBOX
             if num < 0:
-                num += self.cpu.get_latest_value_count()
+                num += self.cpu.get_latest_value_count(self.deadframe)
             return self.cpu.get_latest_value_int(self.deadframe, num)
 
     def decode_ref(self, tagged):
@@ -1254,7 +1254,7 @@
         else:
             assert tag == TAGBOX
             if num < 0:
-                num += self.cpu.get_latest_value_count()
+                num += self.cpu.get_latest_value_count(self.deadframe)
             return self.cpu.get_latest_value_ref(self.deadframe, num)
 
     def decode_float(self, tagged):
@@ -1264,7 +1264,7 @@
         else:
             assert tag == TAGBOX
             if num < 0:
-                num += self.cpu.get_latest_value_count()
+                num += self.cpu.get_latest_value_count(self.deadframe)
             return self.cpu.get_latest_value_float(self.deadframe, num)
 
     def write_an_int(self, index, int):


More information about the pypy-commit mailing list