Author: Maciej Fijalkowski <[email protected]>
Branch: jitframe-on-heap
Changeset: r60038:9a2f46a8e578
Date: 2013-01-13 21:31 +0200
http://bitbucket.org/pypy/pypy/changeset/9a2f46a8e578/
Log: fix fix fix
diff --git a/pypy/jit/backend/llsupport/llmodel.py
b/pypy/jit/backend/llsupport/llmodel.py
--- a/pypy/jit/backend/llsupport/llmodel.py
+++ b/pypy/jit/backend/llsupport/llmodel.py
@@ -1,7 +1,8 @@
from pypy.rpython.lltypesystem import lltype, llmemory, rffi, rclass, rstr
from pypy.rpython.lltypesystem.lloperation import llop
from pypy.rpython.llinterp import LLInterpreter
-from pypy.rpython.annlowlevel import llhelper, cast_instance_to_base_ptr
+from pypy.rpython.annlowlevel import llhelper, cast_instance_to_base_ptr,\
+ cast_instance_to_gcref
from pypy.rlib.objectmodel import we_are_translated, specialize
from pypy.jit.metainterp import history
from pypy.jit.codewriter import heaptracker, longlong
@@ -263,6 +264,11 @@
descr = deadframe.jf_descr
return history.AbstractDescr.show(self, descr)
+ def store_fail_descr(self, deadframe, failindex):
+ faildescr = self.get_fail_descr_from_number(failindex)
+ frame = lltype.cast_opaque_ptr(jitframe.JITFRAMEPTR, deadframe)
+ frame.jf_descr = cast_instance_to_gcref(faildescr)
+
def _decode_pos(self, deadframe, index):
descr = self.get_latest_descr(deadframe)
if descr.final_descr:
diff --git a/pypy/jit/backend/test/runner_test.py
b/pypy/jit/backend/test/runner_test.py
--- a/pypy/jit/backend/test/runner_test.py
+++ b/pypy/jit/backend/test/runner_test.py
@@ -2758,9 +2758,7 @@
def test_assembler_call(self):
called = []
def assembler_helper(failindex, deadframe, virtualizable):
- faildescr = self.cpu.get_fail_descr_from_number(failindex)
- frame = lltype.cast_opaque_ptr(jitframe.JITFRAMEPTR, deadframe)
- frame.jf_descr = cast_instance_to_gcref(faildescr)
+ self.cpu.store_fail_descr(deadframe, failindex)
assert self.cpu.get_int_value(deadframe, 0) == 97
called.append(self.cpu.get_latest_descr(deadframe))
return 4 + 9
@@ -2836,9 +2834,7 @@
py.test.skip("requires floats")
called = []
def assembler_helper(failindex, deadframe, virtualizable):
- frame = lltype.cast_opaque_ptr(jitframe.JITFRAMEPTR, deadframe)
- faildescr = self.cpu.get_fail_descr_from_number(failindex)
- frame.jf_descr = cast_instance_to_gcref(faildescr)
+ self.cpu.store_fail_descr(deadframe, failindex)
x = self.cpu.get_float_value(deadframe, 0)
assert longlong.getrealfloat(x) == 1.2 + 3.2
called.append(self.cpu.get_latest_descr(deadframe))
@@ -2935,13 +2931,15 @@
if not self.cpu.supports_floats:
py.test.skip("requires floats")
called = []
- def assembler_helper(deadframe, virtualizable):
+ def assembler_helper(failindex, deadframe, virtualizable):
+ self.cpu.store_fail_descr(deadframe, failindex)
x = self.cpu.get_float_value(deadframe, 0)
assert longlong.getrealfloat(x) == 1.25 + 3.25
called.append(self.cpu.get_latest_descr(deadframe))
return 13.5
- FUNCPTR = lltype.Ptr(lltype.FuncType([llmemory.GCREF, llmemory.GCREF],
+ FUNCPTR = lltype.Ptr(lltype.FuncType([lltype.Signed,
+ llmemory.GCREF, llmemory.GCREF],
lltype.Float))
class FakeJitDriverSD:
index_of_virtualizable = -1
diff --git a/pypy/jit/backend/x86/assembler.py
b/pypy/jit/backend/x86/assembler.py
--- a/pypy/jit/backend/x86/assembler.py
+++ b/pypy/jit/backend/x86/assembler.py
@@ -582,7 +582,7 @@
self.patch_jump_for_descr(faildescr, rawstart)
ops_offset = self.mc.ops_offset
self.fixup_target_tokens(rawstart)
- frame_depth = max(self.current_clt.frame_depth,
+ frame_depth = max(self.current_clt.frame_info.jfi_frame_depth,
frame_depth + JITFRAME_FIXED_SIZE)
self.current_clt.frame_info.jfi_frame_depth = frame_depth
self.teardown()
@@ -740,7 +740,7 @@
frame_depth = regalloc.get_final_frame_depth()
jump_target_descr = regalloc.jump_target_descr
if jump_target_descr is not None:
- target_frame_depth =
jump_target_descr._x86_clt.frame_info.frame_depth
+ target_frame_depth =
jump_target_descr._x86_clt.frame_info.jfi_frame_depth
frame_depth = max(frame_depth, target_frame_depth)
return frame_depth
@@ -824,7 +824,6 @@
self.mc.SUB_mi8((ebx.value, 0), 2*WORD) # SUB [ebx], 2*WORD
def redirect_call_assembler(self, oldlooptoken, newlooptoken):
- xxx
# some minimal sanity checking
old_nbargs = oldlooptoken.compiled_loop_token._debug_nbargs
new_nbargs = newlooptoken.compiled_loop_token._debug_nbargs
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit