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

Reply via email to