[pypy-svn] r62690 - pypy/branch/pyjitpl5/pypy/jit/backend/x86
fijal at codespeak.net
fijal at codespeak.net
Sat Mar 7 11:39:29 CET 2009
Author: fijal
Date: Sat Mar 7 11:39:29 2009
New Revision: 62690
Modified:
pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py
Log:
good, now test_exception_from_outside passes. A bit hackish... I'll fix it
I promise
Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py Sat Mar 7 11:39:29 2009
@@ -2,8 +2,9 @@
import ctypes
from pypy.jit.backend.x86 import symbolic
from pypy.jit.metainterp.history import Const, ConstInt, Box
-from pypy.rpython.lltypesystem import lltype, rffi, ll2ctypes, rstr
+from pypy.rpython.lltypesystem import lltype, rffi, ll2ctypes, rstr, llmemory
from pypy.rpython.lltypesystem.rclass import OBJECT
+from pypy.rpython.lltypesystem.lloperation import llop
from pypy.annotation import model as annmodel
from pypy.tool.uid import fixid
from pypy.jit.backend.x86.regalloc import (RegAlloc, FRAMESIZE, WORD, REGS,
@@ -37,14 +38,18 @@
if self.mc is None:
# we generate the loop body in 'mc'
# 'mc2' is for guard recovery code
- self._exception_data = lltype.malloc(rffi.CArray(lltype.Signed), 2,
- zero=True, flavor='raw')
+ if we_are_translated():
+ addr = llop.get_exception_addr(llmemory.Address)
+ self._exception_data = llmemory.cast_adr_to_ptr(addr, rffi.CArrayPtr(lltype.Signed))
+ else:
+ self._exception_data = lltype.malloc(rffi.CArray(lltype.Signed), 2,
+ zero=True, flavor='raw')
self._exception_addr = self.cpu.cast_ptr_to_int(
self._exception_data)
# a backup, in case our exception can be somehow mangled,
# by a handling code
self._exception_bck = lltype.malloc(rffi.CArray(lltype.Signed), 2,
- zero=True, flavor='raw')
+ zero=True, flavor='raw')
self._exception_bck_addr = self.cpu.cast_ptr_to_int(
self._exception_bck)
self.mc = codebuf.MachineCodeBlock(self.MC_SIZE)
More information about the Pypy-commit
mailing list