Author: David Schneider <[email protected]>
Branch: jitframe-on-heap
Changeset: r60982:a2b8f39dec68
Date: 2013-02-08 17:41 +0100
http://bitbucket.org/pypy/pypy/changeset/a2b8f39dec68/
Log: move force method to llsupport
diff --git a/rpython/jit/backend/arm/runner.py
b/rpython/jit/backend/arm/runner.py
--- a/rpython/jit/backend/arm/runner.py
+++ b/rpython/jit/backend/arm/runner.py
@@ -117,33 +117,6 @@
cast_ptr_to_int._annspecialcase_ = 'specialize:arglltype(0)'
cast_ptr_to_int = staticmethod(cast_ptr_to_int)
- all_null_registers = lltype.malloc(rffi.LONGP.TO,
- len(all_vfp_regs) * 2 + len(all_regs),
- flavor='raw', zero=True, immortal=True)
-
- def force(self, addr_of_force_index):
- TP = rffi.CArrayPtr(lltype.Signed)
- fail_index = rffi.cast(TP, addr_of_force_index)[0]
- assert fail_index >= 0, "already forced!"
- faildescr = self.get_fail_descr_from_number(fail_index)
- rffi.cast(TP, addr_of_force_index)[0] = ~fail_index
- frb = self.assembler._find_failure_recovery_bytecode(faildescr)
- bytecode = rffi.cast(rffi.UCHARP, frb)
- addr_all_null_regsiters = rffi.cast(rffi.LONG, self.all_null_registers)
- #
- assert (rffi.cast(lltype.Signed, bytecode[0]) ==
- self.assembler.CODE_FORCED)
- bytecode = rffi.ptradd(bytecode, 1)
- deadframe = self.assembler.grab_frame_values(self,
- bytecode, addr_of_force_index,
- self.all_null_registers,
- self.all_null_registers)
- #
- assert self.get_latest_descr(deadframe) is faildescr
- self.assembler.force_token_to_dead_frame[addr_of_force_index] = (
- deadframe)
- return deadframe
-
def redirect_call_assembler(self, oldlooptoken, newlooptoken):
self.assembler.redirect_call_assembler(oldlooptoken, newlooptoken)
diff --git a/rpython/jit/backend/llsupport/llmodel.py
b/rpython/jit/backend/llsupport/llmodel.py
--- a/rpython/jit/backend/llsupport/llmodel.py
+++ b/rpython/jit/backend/llsupport/llmodel.py
@@ -178,6 +178,11 @@
self.gc_ll_descr.freeing_block(rawstart, rawstop)
self.asmmemmgr.free(rawstart, rawstop)
+ def force(self, addr_of_force_token):
+ frame = rffi.cast(jitframe.JITFRAMEPTR, addr_of_force_token)
+ frame.jf_descr = frame.jf_force_descr
+ return lltype.cast_opaque_ptr(llmemory.GCREF, frame)
+
# ------------------- helpers and descriptions --------------------
@staticmethod
diff --git a/rpython/jit/backend/x86/runner.py
b/rpython/jit/backend/x86/runner.py
--- a/rpython/jit/backend/x86/runner.py
+++ b/rpython/jit/backend/x86/runner.py
@@ -152,11 +152,6 @@
cast_ptr_to_int._annspecialcase_ = 'specialize:arglltype(0)'
cast_ptr_to_int = staticmethod(cast_ptr_to_int)
- def force(self, addr_of_force_token):
- frame = rffi.cast(jitframe.JITFRAMEPTR, addr_of_force_token)
- frame.jf_descr = frame.jf_force_descr
- return lltype.cast_opaque_ptr(llmemory.GCREF, frame)
-
def redirect_call_assembler(self, oldlooptoken, newlooptoken):
self.assembler.redirect_call_assembler(oldlooptoken, newlooptoken)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit