Author: Richard Plangger <planri...@gmail.com> Branch: s390x-backend Changeset: r81879:eb2fcf893ee0 Date: 2016-01-20 15:05 +0100 http://bitbucket.org/pypy/pypy/changeset/eb2fcf893ee0/
Log: fixed a pool issue where a guard token did not receive it's rightful pool position diff --git a/rpython/jit/backend/test/zll_stress.py b/rpython/jit/backend/test/zll_stress.py --- a/rpython/jit/backend/test/zll_stress.py +++ b/rpython/jit/backend/test/zll_stress.py @@ -19,4 +19,5 @@ r = Random() r.jumpahead(piece*99999999) for i in range(piece*per_piece, (piece+1)*per_piece): + print " i = %d; r.setstate(%s)" % (i, r.getstate()) check_random_function(cpu, LLtypeOperationBuilder, r, i, total_iterations) 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 @@ -132,7 +132,7 @@ fail_descr, target = self.store_info_on_descr(startpos, guardtok) assert target != 0 pool_offset = guardtok._pool_offset - + assert pool_offset != -1 # overwrite the gcmap in the jitframe offset = pool_offset + RECOVERY_GCMAP_POOL_OFFSET 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 @@ -641,6 +641,7 @@ token = ZARCHGuardToken(self.cpu, gcmap, descr, op.getfailargs(), arglocs, op.getopnum(), frame_depth, fcond) + token._pool_offset = self.pool.get_descr_offset(descr) return token def emit_guard_true(self, op, arglocs, regalloc): diff --git a/rpython/jit/backend/zarch/pool.py b/rpython/jit/backend/zarch/pool.py --- a/rpython/jit/backend/zarch/pool.py +++ b/rpython/jit/backend/zarch/pool.py @@ -125,7 +125,7 @@ self.constant_64_zeros = -1 self.constant_64_ones = -1 self.constant_64_sign_bit = -1 - self.constant_max_64_positive -1 + self.constant_max_64_positive = -1 def check_size(self, size=-1): if size == -1: @@ -190,6 +190,7 @@ def overwrite_64(self, mc, index, value): index += self.pool_start + mc.overwrite(index, chr(value >> 56 & 0xff)) mc.overwrite(index+1, chr(value >> 48 & 0xff)) mc.overwrite(index+2, chr(value >> 40 & 0xff)) @@ -209,6 +210,6 @@ offset = self.offset_descr[descr] assert isinstance(offset, int) assert offset >= 0 - guard_token._pool_offset = offset + assert guard_token._pool_offset != -1 ptr = rffi.cast(lltype.Signed, guard_token.gcmap) self.overwrite_64(mc, offset + RECOVERY_GCMAP_POOL_OFFSET, ptr) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit