Author: Maciej Fijalkowski <fij...@gmail.com> Branch: optresult-unroll Changeset: r79196:74f0b0106b86 Date: 2015-08-24 13:24 +0200 http://bitbucket.org/pypy/pypy/changeset/74f0b0106b86/
Log: maaaybe fix this test diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py --- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py @@ -7231,7 +7231,8 @@ p188 = getarrayitem_gc_r(p187, 42, descr=gcarraydescr) guard_value(p188, ConstPtr(myptr)) [] p25 = getfield_gc_r(ConstPtr(myptr), descr=otherdescr) - jump(p25, p187, i184) + p5 = same_as_r(p25) + jump(p25, p187, i184, p5) """ short = """ [p1, p187, i184] @@ -7242,7 +7243,7 @@ """ expected = """ [p25, p187, i184, p189] - jump(p25, p187, i184, p189) + jump(p189, p187, i184, p189) # <- XXX is this correct for bridges? """ self.optimize_loop(ops, expected, preamble, expected_short=short) diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py b/rpython/jit/metainterp/optimizeopt/unroll.py --- a/rpython/jit/metainterp/optimizeopt/unroll.py +++ b/rpython/jit/metainterp/optimizeopt/unroll.py @@ -115,7 +115,7 @@ extra = self.short_preamble_producer.used_boxes label_op.initarglist(label_args + extra) # force the boxes for virtual state to match - x = state.virtual_state.make_inputargs( + state.virtual_state.make_inputargs( [self.get_box_replacement(x) for x in end_jump.getarglist()], self.optimizer, force_boxes=True) new_virtual_state = self.jump_to_existing_trace(end_jump) @@ -219,7 +219,7 @@ args = target_virtual_state.make_inputargs(args, self.optimizer) extra = self.inline_short_preamble(pass_to_short, - short_preamble[0].getarglist(), short_preamble[1:-1], + short_preamble[0].getarglist(), short_preamble, short_preamble[-1].getarglist(), self.optimizer.patchguardop) self.send_extra_operation(jump_op.copy_and_change(rop.JUMP, args=args + extra, @@ -236,16 +236,19 @@ for i in range(len(jump_args)): short_inputargs[i].set_forwarded(None) self.make_equal_to(short_inputargs[i], jump_args[i]) - for op in short_ops: + i = 1 + while i < len(short_ops) - 1: + op = short_ops[i] if op.is_guard(): op = self.replace_op_with(op, op.getopnum(), descr=compile.ResumeAtPositionDescr()) op.rd_snapshot = patchguardop.rd_snapshot op.rd_frame_info_list = patchguardop.rd_frame_info_list self.optimizer.send_extra_operation(op) - res = [self.optimizer.get_box_replacement(op) for op in - short_jump_op] - return res + i += 1 + for arg in jump_args: + self.optimizer.force_box(self.get_box_replacement(arg)) + return [self.get_box_replacement(box) for box in short_jump_op] finally: for op in short_inputargs: op.set_forwarded(None) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit