[pypy-commit] pypy ppc-backend-2: Correct computation of index into fp_registers.

edelsohn noreply at buildbot.pypy.org
Wed Jun 6 02:58:15 CEST 2012


Author: edelsohn
Branch: ppc-backend-2
Changeset: r55421:3eab9cc91b12
Date: 2012-06-05 20:57 -0400
http://bitbucket.org/pypy/pypy/changeset/3eab9cc91b12/

Log:	Correct computation of index into fp_registers. Fix offset for
	saving float managed registers.

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
@@ -241,7 +241,8 @@
                     break
                 code >>= 2
                 if kind == self.DESCR_FLOAT:
-                    fvalue = r.get_managed_fpreg_index(code)
+                    reg_index = r.get_managed_fpreg_index(code)
+                    fvalue = fp_registers[reg_index]
                 else:
                     reg_index = r.get_managed_reg_index(code)
                     value = registers[reg_index]
@@ -575,9 +576,10 @@
         for i in range(len(r.MANAGED_REGS)):
             reg = r.MANAGED_REGS[i]
             mc.store(reg.value, r.SPP.value, i * WORD)
+        FLOAT_OFFSET = len(r.MANAGED_REGS)
         for i in range(len(r.MANAGED_FP_REGS)):
             fpreg = r.MANAGED_FP_REGS[i]
-            mc.stfd(fpreg.value, r.SPP.value, i * WORD + len(r.MANAGED_REGS))
+            mc.stfd(fpreg.value, r.SPP.value, (i + FLOAT_OFFSET) * WORD)
 
     def gen_bootstrap_code(self, loophead, spilling_area):
         self._insert_stack_check()


More information about the pypy-commit mailing list