Author: Maciej Fijalkowski <fij...@gmail.com> Branch: optresult Changeset: r75243:fae2f865fc7d Date: 2015-01-05 15:53 +0200 http://bitbucket.org/pypy/pypy/changeset/fae2f865fc7d/
Log: failing test diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py --- a/rpython/jit/metainterp/optimizeopt/optimizer.py +++ b/rpython/jit/metainterp/optimizeopt/optimizer.py @@ -754,7 +754,7 @@ self.pendingfields = None if self.replaces_guard and orig_op in self.replaces_guard: self.replace_guard_op(self.replaces_guard[orig_op], op) - del self.replaces_guard[op] + del self.replaces_guard[orig_op] return else: guard_op = self.replace_op_with(op, op.getopnum()) diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py --- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py @@ -5534,6 +5534,24 @@ """ self.optimize_loop(ops, ops) + def test_replace_result_of_new(self): + ops = """ + [i0] + guard_value(i0, 2) [] + p0 = newstr(i0) + escape_n(p0) + finish() + """ + expected = """ + [i0] + guard_value(i0, 2) [] + p0 = newstr(2) + escape_n(p0) + finish() + """ + self.optimize_loop(ops, expected) + + class TestLLtype(BaseTestOptimizeBasic, LLtypeMixin): pass diff --git a/rpython/jit/metainterp/optimizeopt/vstring.py b/rpython/jit/metainterp/optimizeopt/vstring.py --- a/rpython/jit/metainterp/optimizeopt/vstring.py +++ b/rpython/jit/metainterp/optimizeopt/vstring.py @@ -110,10 +110,10 @@ assert self.source_op is not None lengthbox = self.getstrlen(optforce, self.mode, None) op = ResOperation(self.mode.NEWSTR, [lengthbox]) - self.box = op if not we_are_translated(): op.name = 'FORCE' optforce.emit_operation(op) + self.box = optforce.getlastop() self.initialize_forced_string(optforce, self.box, CONST_0, self.mode) def initialize_forced_string(self, string_optimizer, targetbox, @@ -193,8 +193,7 @@ charbox = charvalue.force_box(string_optimizer) op = ResOperation(mode.STRSETITEM, [targetbox, offsetbox, - charbox], - None) + charbox]) string_optimizer.emit_operation(op) offsetbox = _int_add(string_optimizer, offsetbox, CONST_1) return offsetbox @@ -331,8 +330,7 @@ assert not isinstance(targetbox, Const)# ConstPtr never makes sense string_optimizer.emit_operation(ResOperation(mode.STRSETITEM, [targetbox, offsetbox, - charbox], - None)) + charbox])) offsetbox = _int_add(string_optimizer, offsetbox, CONST_1) else: if need_next_offset: @@ -533,7 +531,7 @@ dst.force_box(self), ConstInt(index + dst_start), vresult.force_box(self), - ], None) + ]) self.emit_operation(new_op) else: copy_str_content(self, _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit