[pypy-commit] pypy ppc-jit-backend: Distinguish ENCODING_AREA from FORCE_INDEX_AREA.
edelsohn
noreply at buildbot.pypy.org
Sat Feb 18 22:45:00 CET 2012
Author: edelsohn
Branch: ppc-jit-backend
Changeset: r52621:650340cfe68d
Date: 2012-02-18 16:43 -0500
http://bitbucket.org/pypy/pypy/changeset/650340cfe68d/
Log: Distinguish ENCODING_AREA from FORCE_INDEX_AREA. Use with
scratch_reg.
diff --git a/pypy/jit/backend/ppc/ppc_assembler.py b/pypy/jit/backend/ppc/ppc_assembler.py
--- a/pypy/jit/backend/ppc/ppc_assembler.py
+++ b/pypy/jit/backend/ppc/ppc_assembler.py
@@ -94,6 +94,7 @@
EMPTY_LOC = '\xFE'
END_OF_LOCS = '\xFF'
+ FORCE_INDEX_AREA = len(r.MANAGED_REGS) * WORD
ENCODING_AREA = len(r.MANAGED_REGS) * WORD
OFFSET_SPP_TO_GPR_SAVE_AREA = (FORCE_INDEX + FLOAT_INT_CONVERSION
+ ENCODING_AREA)
@@ -797,10 +798,9 @@
memaddr = self.gen_descr_encoding(descr, args, arglocs)
# store addr in force index field
- self.mc.alloc_scratch_reg()
- self.mc.load_imm(r.SCRATCH, memaddr)
- self.mc.store(r.SCRATCH.value, r.SPP.value, self.ENCODING_AREA)
- self.mc.free_scratch_reg()
+ with scratch_reg(self.mc):
+ self.mc.load_imm(r.SCRATCH, memaddr)
+ self.mc.store(r.SCRATCH.value, r.SPP.value, self.FORCE_INDEX_AREA)
if save_exc:
path = self._leave_jitted_hook_save_exc
@@ -1041,10 +1041,9 @@
return 0
def _write_fail_index(self, fail_index):
- self.mc.alloc_scratch_reg()
- self.mc.load_imm(r.SCRATCH, fail_index)
- self.mc.store(r.SCRATCH.value, r.SPP.value, self.ENCODING_AREA)
- self.mc.free_scratch_reg()
+ with scratch_reg(self.mc):
+ self.mc.load_imm(r.SCRATCH, fail_index)
+ self.mc.store(r.SCRATCH.value, r.SPP.value, self.FORCE_INDEX_AREA)
def load(self, loc, value):
assert loc.is_reg() and value.is_imm()
More information about the pypy-commit
mailing list