Author: Richard Plangger <planri...@gmail.com> Branch: Changeset: r83610:b55e5e29e2f0 Date: 2016-04-12 11:47 +0200 http://bitbucket.org/pypy/pypy/changeset/b55e5e29e2f0/
Log: wrong parameter to LG command and wrong jump target to bridge 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 @@ -144,7 +144,7 @@ def load_gcref_into(self, register, index): topoff = index * WORD size = self.pool.gcref_table_size - self.mc.LG(r.SCRATCH, l.addr(-size + topoff, r.POOL)) + self.mc.LG(register, l.addr(-size + topoff, r.POOL)) def _build_wb_slowpath(self, withcards, withfloats=False, for_frame=False): descr = self.cpu.gc_ll_descr.write_barrier_descr @@ -706,11 +706,11 @@ operations = regalloc.prepare_bridge(inputargs, arglocs, operations, allgcrefs, self.current_clt.frame_info) - self.pool.pre_assemble(self, operations, all_gcrefs, bridge=True) - startpos = self.mc.get_relative_pos() - self.mc.LARL(r.POOL, l.halfword(self.pool.pool_start - startpos)) + startpos = len(allgcrefs) * WORD + self.pool.pre_assemble(self, operations, allgcrefs, bridge=True) self._check_frame_depth(self.mc, regalloc.get_gcmap()) bridgestartpos = self.mc.get_relative_pos() + self.mc.LARL(r.POOL, l.halfword(self.pool.pool_start - bridgestartpos)) frame_depth_no_fixed_size = self._assemble(regalloc, inputargs, operations) codeendpos = self.mc.get_relative_pos() #self.pool.post_assemble(self) @@ -732,7 +732,7 @@ debug_stop("jit-backend-addr") self.patch_pending_failure_recoveries(rawstart) # patch the jump from original guard - self.patch_jump_for_descr(faildescr, rawstart + startpos) + self.patch_jump_for_descr(faildescr, rawstart + bridgestartpos) ops_offset = self.mc.ops_offset frame_depth = max(self.current_clt.frame_info.jfi_frame_depth, frame_depth_no_fixed_size + JITFRAME_FIXED_SIZE) 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 @@ -642,7 +642,7 @@ def emit_load_from_gc_table(self, op, arglocs, regalloc): resloc, = arglocs index = op.getarg(0).getint() - assert isinstance(resloc, RegLoc) + assert resloc.is_reg() self.load_gcref_into(resloc, index) def emit_guard_true(self, op, arglocs, regalloc): diff --git a/rpython/jit/backend/zarch/regalloc.py b/rpython/jit/backend/zarch/regalloc.py --- a/rpython/jit/backend/zarch/regalloc.py +++ b/rpython/jit/backend/zarch/regalloc.py @@ -1216,7 +1216,7 @@ return [] def prepare_load_from_gc_table(self, op): - resloc = self.rm.ensure_reg(op) + resloc = self.rm.force_allocate_reg(op) return [resloc] def prepare_finish(self, op): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit