[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