[pypy-commit] pypy s390x-backend: place the saved register (loc_index) at a valid stack position!

plan_rich pypy.commits at gmail.com
Thu Feb 4 04:20:39 EST 2016


Author: Richard Plangger <planrichi at gmail.com>
Branch: s390x-backend
Changeset: r82070:8bc88d808cbf
Date: 2016-02-04 10:19 +0100
http://bitbucket.org/pypy/pypy/changeset/8bc88d808cbf/

Log:	place the saved register (loc_index) at a valid stack position!

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
@@ -533,13 +533,13 @@
 
         if loc_index.is_reg() and loc_index.value < 6:
             mc.LAY(r.SP, l.addr(-WORD, r.SP))
-            mc.STG(loc_index, l.addr(0, r.SP))
+            mc.STG(loc_index, l.addr(STD_FRAME_SIZE_IN_BYTES, r.SP))
 
         mc.load_imm(r.r14, self.wb_slowpath[helper_num])
         mc.BASR(r.r14, r.r14)
 
         if loc_index.is_reg() and loc_index.value < 6:
-            mc.LG(loc_index, l.addr(0, r.SP))
+            mc.LG(loc_index, l.addr(STD_FRAME_SIZE_IN_BYTES, r.SP))
             mc.LAY(r.SP, l.addr(WORD, r.SP))
 
         if card_marking_mask:
@@ -567,12 +567,12 @@
                 #   tmp_loc = ~(index >> (card_page_shift + 3))
                 mc.SRAG(tmp_loc, loc_index, l.addr(n+3))
                 # invert the bits of tmp_loc
-                mc.XG(tmp_loc, l.pool(self.pool.constant_64_ones))
 
                 # compute in SCRATCH the index of the bit inside the byte:
                 #    scratch = (index >> card_page_shift) & 7
                 # 0x80 sets zero flag. will store 0 into all not selected bits
                 mc.RISBGN(r.SCRATCH, loc_index, l.imm(61), l.imm(0x80 | 63), l.imm(64-n))
+                mc.XG(tmp_loc, l.pool(self.pool.constant_64_ones))
                 #mc.SRAG(r.SCRATCH, loc_index, l.addr(n))
                 #mc.NILL(r.SCRATCH, l.imm(0x7))
 


More information about the pypy-commit mailing list