[pypy-commit] pypy optresult: failing test

fijal noreply at buildbot.pypy.org
Mon Jan 5 15:06:19 CET 2015


Author: Maciej Fijalkowski <fijall at 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,


More information about the pypy-commit mailing list