Author: Maciej Fijalkowski <[email protected]>
Branch: jitframe-on-heap
Changeset: r60002:6944a86418c9
Date: 2013-01-12 21:51 +0200
http://bitbucket.org/pypy/pypy/changeset/6944a86418c9/
Log: base exception handling
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
@@ -77,11 +77,6 @@
return (rffi.cast(lltype.Signed, _exception_emulator) +
rffi.sizeof(lltype.Signed))
- # XXX I think we don't need it any more
- #self._memoryerror_emulated = rffi.cast(llmemory.GCREF, -123)
- #self.deadframe_memoryerror = lltype.malloc(jitframe.DEADFRAME, 0)
- #self.deadframe_memoryerror.jf_guard_exc = self._memoryerror_emulated
-
def propagate_exception():
exc = _exception_emulator[1]
_exception_emulator[0] = 0
@@ -128,8 +123,6 @@
slowpathaddr = rffi.cast(lltype.Signed, f)
return endaddr, lengthaddr, slowpathaddr
- #self.deadframe_memoryerror = lltype.malloc(jitframe.DEADFRAME, 0)
-
def propagate_exception():
addr = llop.get_exception_addr(llmemory.Address)
addr.address[0] = llmemory.NULL
@@ -172,10 +165,7 @@
return llhelper(self.PROPAGATE_EXCEPTION, self._propagate_exception)
def grab_exc_value(self, deadframe):
- XXX
- deadframe = lltype.cast_opaque_ptr(jitframe.DEADFRAMEPTR, deadframe)
- if not we_are_translated() and deadframe == self.deadframe_memoryerror:
- return "memoryerror!" # for tests
+ deadframe = lltype.cast_opaque_ptr(jitframe.JITFRAMEPTR, deadframe)
return deadframe.jf_guard_exc
def set_savedata_ref(self, deadframe, data):
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
@@ -1875,8 +1875,8 @@
from pypy.jit.backend.llsupport.descr import unpack_fielddescr
descrs = self.cpu.gc_ll_descr.getframedescrs(self.cpu)
offset, size, _ = unpack_fielddescr(descrs.jf_guard_exc)
- # XXX ebp relative, not eax relative
- mc.MOV_mr((eax.value, offset), ebx.value)
+ _, base_offset, _ = unpack_arraydescr(descrs.arraydescr)
+ mc.MOV_br(offset - base_offset, ebx.value)
# now we return from the complete frame, which starts from
# _call_header_with_stack_check(). The LEA in _call_footer below
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit