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