Author: Richard Plangger <[email protected]>
Branch:
Changeset: r89039:1656fa7e6390
Date: 2016-12-13 12:25 +0100
http://bitbucket.org/pypy/pypy/changeset/1656fa7e6390/
Log: slow path overwrites r2 (return register), save it in r1 before
returning and restore it later
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
@@ -426,6 +426,8 @@
# Finish
self._reload_frame_if_necessary(mc)
+ mc.LGR(r.SCRATCH2, r.r2)
+
self.pop_gcmap(mc) # cancel the push_gcmap(store=True) in the caller
self._pop_core_regs_from_jitframe(mc, saved_regs)
if supports_floats:
diff --git a/rpython/jit/backend/zarch/opassembler.py
b/rpython/jit/backend/zarch/opassembler.py
--- a/rpython/jit/backend/zarch/opassembler.py
+++ b/rpython/jit/backend/zarch/opassembler.py
@@ -376,6 +376,7 @@
def emit_cond_call(self, op, arglocs, regalloc):
resloc = arglocs[0]
arglocs = arglocs[1:]
+
fcond = self.guard_success_cc
self.guard_success_cc = c.cond_none
assert fcond.value != c.cond_none.value
@@ -413,7 +414,7 @@
# restoring the registers saved above, and doing pop_gcmap(), is left
# to the cond_call_slowpath helper. We never have any result value.
if resloc is not None:
- self.mc.LGR(resloc, r.RES)
+ self.mc.LGR(resloc, r.SCRATCH2)
relative_target = self.mc.currpos() - jmp_adr
pmc = OverwritingBuilder(self.mc, jmp_adr, 1)
pmc.BRCL(fcond, l.imm(relative_target))
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit