[pypy-commit] pypy ppc-jit-backend: (edelsohn, arigato): Save and restore r3 around wb_slowpath call in

edelsohn noreply at buildbot.pypy.org
Sat Aug 25 22:22:50 CEST 2012


Author: edelsohn
Branch: ppc-jit-backend
Changeset: r56853:59ecc2038e7a
Date: 2012-08-25 16:22 -0400
http://bitbucket.org/pypy/pypy/changeset/59ecc2038e7a/

Log:	(edelsohn, arigato): Save and restore r3 around wb_slowpath call in
	cond_call_gc_wb if used to remap loc_base.

diff --git a/pypy/jit/backend/ppc/opassembler.py b/pypy/jit/backend/ppc/opassembler.py
--- a/pypy/jit/backend/ppc/opassembler.py
+++ b/pypy/jit/backend/ppc/opassembler.py
@@ -1053,10 +1053,13 @@
             assert self.wb_slowpath[helper_num] != 0
         #
         if loc_base is not r.r3:
+            self.mc.store(r.r3.value, r.SP.value, 24)
             remap_frame_layout(self, [loc_base], [r.r3], r.SCRATCH)
         addr = self.wb_slowpath[helper_num]
         func = rffi.cast(lltype.Signed, addr)
         self.mc.bl_abs(func)
+        if loc_base is not r.r3:
+            self.mc.load(r.r3.value, r.SP.value, 24)
 
         # if GCFLAG_CARDS_SET, then we can do the whole thing that would
         # be done in the CALL above with just four instructions, so here


More information about the pypy-commit mailing list