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

Reply via email to