Author: Armin Rigo <[email protected]>
Branch: remove-globals-in-jit
Changeset: r58896:a328d63c9654
Date: 2012-11-14 16:46 +0100
http://bitbucket.org/pypy/pypy/changeset/a328d63c9654/
Log: Fix
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
@@ -868,6 +868,8 @@
assert exception, "PropagateExceptionDescr: no exception??"
raise metainterp_sd.ExitFrameWithExceptionRef(cpu, exception)
+propagate_exception_descr = PropagateExceptionDescr()
+
def compile_tmp_callback(cpu, jitdriver_sd, greenboxes, redargtypes,
memory_manager=None):
"""Make a LoopToken that corresponds to assembler code that just
@@ -905,7 +907,7 @@
finishargs = []
#
jd = jitdriver_sd
- faildescr = PropagateExceptionDescr()
+ faildescr = propagate_exception_descr
operations = [
ResOperation(rop.CALL, callargs, result, descr=jd.portal_calldescr),
ResOperation(rop.GUARD_NO_EXCEPTION, [], None, descr=faildescr),
diff --git a/pypy/jit/metainterp/test/test_compile.py
b/pypy/jit/metainterp/test/test_compile.py
--- a/pypy/jit/metainterp/test/test_compile.py
+++ b/pypy/jit/metainterp/test/test_compile.py
@@ -152,7 +152,7 @@
from pypy.rpython.annlowlevel import llhelper
from pypy.rpython.llinterp import LLException
#
- cpu = runner.LLtypeCPU(None)
+ cpu = runner.LLGraphCPU(None)
FUNC = lltype.FuncType([lltype.Signed]*4, lltype.Signed)
def ll_portal_runner(g1, g2, r3, r4):
assert (g1, g2, r3, r4) == (12, 34, -156, -178)
@@ -174,24 +174,27 @@
#
raiseme = None
# only two arguments must be passed in
- fail_descr = cpu.execute_token(loop_token, -156, -178)
+ deadframe = cpu.execute_token(loop_token, -156, -178)
+ fail_descr = cpu.get_latest_descr(deadframe)
assert fail_descr is FakeJitDriverSD().portal_finishtoken
#
EXC = lltype.GcStruct('EXC')
llexc = lltype.malloc(EXC)
raiseme = LLException("exception class", llexc)
- fail_descr = cpu.execute_token(loop_token, -156, -178)
+ deadframe = cpu.execute_token(loop_token, -156, -178)
+ fail_descr = cpu.get_latest_descr(deadframe)
assert isinstance(fail_descr, compile.PropagateExceptionDescr)
- got = cpu.grab_exc_value()
+ got = cpu.grab_exc_value(deadframe)
assert lltype.cast_opaque_ptr(lltype.Ptr(EXC), got) == llexc
#
class FakeMetaInterpSD:
class ExitFrameWithExceptionRef(Exception):
pass
FakeMetaInterpSD.cpu = cpu
- fail_descr = cpu.execute_token(loop_token, -156, -178)
+ deadframe = cpu.execute_token(loop_token, -156, -178)
+ fail_descr = cpu.get_latest_descr(deadframe)
try:
- fail_descr.handle_fail(FakeMetaInterpSD(), None)
+ fail_descr.handle_fail(deadframe, FakeMetaInterpSD(), None)
except FakeMetaInterpSD.ExitFrameWithExceptionRef, e:
assert lltype.cast_opaque_ptr(lltype.Ptr(EXC), e.args[1]) == llexc
else:
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit