[pypy-commit] pypy ppc-jit-backend: Added a few methods which will be needed later on

hager noreply at buildbot.pypy.org
Tue Nov 29 10:45:41 CET 2011


Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r49946:30281c041368
Date: 2011-11-24 15:38 +0100
http://bitbucket.org/pypy/pypy/changeset/30281c041368/

Log:	Added a few methods which will be needed later on

diff --git a/pypy/jit/backend/ppc/ppcgen/regalloc.py b/pypy/jit/backend/ppc/ppcgen/regalloc.py
--- a/pypy/jit/backend/ppc/ppcgen/regalloc.py
+++ b/pypy/jit/backend/ppc/ppcgen/regalloc.py
@@ -201,6 +201,12 @@
     def next_instruction(self):
         self.rm.next_instruction()
 
+    def force_spill_var(self, var):
+        if var.type == FLOAT:
+            assert 0, "not implemented yet"
+        else:
+            self.rm.force_spill_var(var)
+
     def before_call(self, force_store=[], save_all_regs=False):
         self.rm.before_call(force_store, save_all_regs)
 
@@ -721,6 +727,24 @@
     prepare_debug_merge_point = void
     prepare_jit_debug = void
 
+    def prepare_force_token(self, op):
+        res_loc = self.force_allocate_reg(op.result)
+        self.possibly_free_var(op.result)
+        return [res_loc]
+
+    def prepare_guard_call_may_force(self, op, guard_op):
+        faildescr = guard_op.getdescr()
+        fail_index = self.cpu.get_fail_descr_number(faildescr)
+        self.assembler._write_fail_index(fail_index)
+        args = [imm(rffi.cast(lltype.Signed, op.getarg(0).getint()))]
+        for v in guard_op.getfailargs():
+            if v in self.rm.reg_bindings:
+                self.force_spill_var(v)
+        self.assembler.emit_call(op, args, self, fail_index)
+        locs = self._prepare_guard(guard_op)
+        self.possibly_free_vars(guard_op.getfailargs())
+        return locs
+
     def prepare_guard_call_assembler(self, op, guard_op):
         descr = op.getdescr()
         assert isinstance(descr, LoopToken)


More information about the pypy-commit mailing list