Author: Richard Plangger <[email protected]>
Branch: s390x-backend
Changeset: r80739:4ccf3025389e
Date: 2015-11-18 08:19 +0100
http://bitbucket.org/pypy/pypy/changeset/4ccf3025389e/

Log:    emit_finish now handles the case if a parameter is in the constant
        pool. it crashed before

diff --git a/rpython/jit/backend/zarch/assembler.py 
b/rpython/jit/backend/zarch/assembler.py
--- a/rpython/jit/backend/zarch/assembler.py
+++ b/rpython/jit/backend/zarch/assembler.py
@@ -618,8 +618,14 @@
         if len(arglocs) > 1:
             [return_val, fail_descr_loc] = arglocs
             if op.getarg(0).type == FLOAT:
+                if return_val.is_in_pool():
+                    self.mc.LDY(r.FSCRATCH, return_val)
+                    return_val = r.FSCRATCH
                 self.mc.STD(return_val, l.addr(base_ofs, r.SPP))
             else:
+                if return_val.is_in_pool():
+                    self.mc.LG(r.SCRATCH, return_val)
+                    return_val = r.SCRATCH
                 self.mc.STG(return_val, l.addr(base_ofs, r.SPP))
         else:
             [fail_descr_loc] = arglocs
diff --git a/rpython/jit/backend/zarch/registers.py 
b/rpython/jit/backend/zarch/registers.py
--- a/rpython/jit/backend/zarch/registers.py
+++ b/rpython/jit/backend/zarch/registers.py
@@ -19,7 +19,9 @@
 [f0,f1,f2,f3,f4,f5,f6,f7,f8,
  f9,f10,f11,f12,f13,f14,f15] = fpregisters
 
-MANAGED_FP_REGS = fpregisters
+FSCRATCH = f0
+
+MANAGED_FP_REGS = fpregisters[1:]
 VOLATILES_FLOAT = []
 
 # The JITFRAME_FIXED_SIZE is measured in words, and should be the
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to