Author: Richard Plangger <[email protected]>
Branch: s390x-backend
Changeset: r82071:7694772ae0c5
Date: 2016-02-04 10:26 +0100
http://bitbucket.org/pypy/pypy/changeset/7694772ae0c5/
Log: did not consider normal gc write barrier, crashes with index out of
bounds!
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
@@ -527,20 +527,22 @@
if not is_frame:
mc.LGR(r.r0, loc_base) # unusual argument location
- loc_index = arglocs[1]
- # loc_index may be in r2 to r5.
- # the wb_slow_path may trash these registers
+ if len(arglocs) > 1:
+ loc_index = arglocs[1]
+ # loc_index may be in r2 to r5.
+ # the wb_slow_path may trash these registers
- 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(STD_FRAME_SIZE_IN_BYTES, r.SP))
+ 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(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(STD_FRAME_SIZE_IN_BYTES, r.SP))
- mc.LAY(r.SP, l.addr(WORD, r.SP))
+ if len(arglocs) > 1:
+ if loc_index.is_reg() and loc_index.value < 6:
+ 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:
# The helper ends again with a check of the flag in the object.
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit