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()
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to