Author: Maciej Fijalkowski <[email protected]>
Branch: continulet-jit-3
Changeset: r58245:6c873fb3754b
Date: 2012-10-19 17:03 +0200
http://bitbucket.org/pypy/pypy/changeset/6c873fb3754b/
Log: (arigo, fijal) Fix. Armin says "the x86 backend will require hacks
straight from the 80s"
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
@@ -217,7 +217,7 @@
frame.finish_value = e.arg
frame.latest_values = e.failargs
frame.latest_descr = e.descr
- frame._execution_finished = True
+ frame._execution_finished_normally = e.descr.fast_path_done
return frame
except GuardFailed, e:
frame.latest_values = e.failargs
@@ -557,7 +557,7 @@
return isinstance(other, LLFrame) and self is other
_forced = False
- _execution_finished = False
+ _execution_finished_normally = False
finish_value = None
def __init__(self, cpu, argboxes, args):
@@ -797,7 +797,7 @@
def execute_call_assembler(self, descr, *args):
frame = self.cpu._execute_token(descr, *args)
- if frame._execution_finished: # fast path
+ if frame._execution_finished_normally: # fast path
return frame.finish_value
jd = descr.outermost_jitdriver_sd
assembler_helper_ptr = jd.assembler_helper_adr.ptr # fish
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
@@ -734,15 +734,19 @@
metainterp_sd.stats.add_jitcell_token(jitcell_token)
-_DoneWithThisFrameDescr = ResumeGuardForcedDescr # XXX replace me
+_DoneWithThisFrameDescr = ResumeGuardForcedDescr # XXX
class DoneWithThisFrameDescrVoid(_DoneWithThisFrameDescr):
+ fast_path_done = True
+
def handle_fail(self, metainterp_sd, jitdriver_sd, jitframe):
assert jitdriver_sd is self.jitdriver_sd
assert jitdriver_sd.result_type == history.VOID
raise metainterp_sd.DoneWithThisFrameVoid()
class DoneWithThisFrameDescrInt(_DoneWithThisFrameDescr):
+ fast_path_done = True
+
def handle_fail(self, metainterp_sd, jitdriver_sd, jitframe):
assert jitdriver_sd is self.jitdriver_sd
assert jitdriver_sd.result_type == history.INT
@@ -750,6 +754,8 @@
raise metainterp_sd.DoneWithThisFrameInt(result)
class DoneWithThisFrameDescrRef(_DoneWithThisFrameDescr):
+ fast_path_done = True
+
def handle_fail(self, metainterp_sd, jitdriver_sd, jitframe):
assert jitdriver_sd is self.jitdriver_sd
assert jitdriver_sd.result_type == history.REF
@@ -758,6 +764,8 @@
raise metainterp_sd.DoneWithThisFrameRef(cpu, result)
class DoneWithThisFrameDescrFloat(_DoneWithThisFrameDescr):
+ fast_path_done = True
+
def handle_fail(self, metainterp_sd, jitdriver_sd, jitframe):
assert jitdriver_sd is self.jitdriver_sd
assert jitdriver_sd.result_type == history.FLOAT
diff --git a/pypy/jit/metainterp/history.py b/pypy/jit/metainterp/history.py
--- a/pypy/jit/metainterp/history.py
+++ b/pypy/jit/metainterp/history.py
@@ -140,6 +140,8 @@
class AbstractDescr(AbstractValue):
__slots__ = ()
+ fast_path_done = False
+
def repr_of_descr(self):
return '%r' % (self,)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit