[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