Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: optresult-unroll
Changeset: r79277:6407bf490893
Date: 2015-08-28 14:59 +0200
http://bitbucket.org/pypy/pypy/changeset/6407bf490893/

Log:    fix some tests

diff --git a/rpython/jit/metainterp/optimizeopt/info.py 
b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -186,7 +186,8 @@
                 subbox = optforce.force_box(fld)
                 setfieldop = ResOperation(rop.SETFIELD_GC, [op, subbox],
                                           descr=flddescr)
-                self._fields[i] = None
+                if not flddescr.is_always_pure():
+                    self._fields[i] = None
                 optforce.emit_operation(setfieldop)
 
     def _force_at_the_end_of_preamble(self, op, optforce, rec):
@@ -452,7 +453,8 @@
             setop = ResOperation(rop.SETARRAYITEM_GC,
                                  [op, ConstInt(i), subbox],
                                   descr=arraydescr)
-            self._items[i] = None
+            if not self.arraydescr.is_always_pure():
+                self._items[i] = None
             optforce.emit_operation(setop)
         optforce.pure_from_args(rop.ARRAYLEN_GC, [op], 
ConstInt(len(self._items)))
 
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
@@ -574,9 +574,20 @@
         setfield_gc(p1, p1sub, descr=nextdescr)
         jump(i1, p1, p2)
         """
+        expected = """
+        [i1, p2, p3]
+        i3 = getfield_gc_i(p3, descr=valuedescr)
+        escape_n(i3)
+        p1 = new_with_vtable(descr=nodesize)
+        setfield_gc(p1, i1, descr=valuedescr)
+        p1sub = new_with_vtable(descr=nodesize2)
+        setfield_gc(p1sub, i1, descr=valuedescr)
+        setfield_gc(p1, p1sub, descr=nextdescr)
+        jump(i1, p1, p2)
+        """
         # The same as test_p123_simple, but with a virtual containing another
         # virtual.
-        self.optimize_loop(ops, ops)
+        self.optimize_loop(ops, expected)
 
     def test_p123_anti_nested(self):
         ops = """
@@ -585,9 +596,9 @@
         i3 = getfield_gc_i(p3sub, descr=valuedescr)
         escape_n(i3)
         p2sub = new_with_vtable(descr=nodesize2)
+        setfield_gc(p2sub, i1, descr=valuedescr)
         setfield_gc(p2, p2sub, descr=nextdescr)
         p1 = new_with_vtable(descr=nodesize)
-        setfield_gc(p2sub, i1, descr=valuedescr)
         jump(i1, p1, p2)
         """
         # The same as test_p123_simple, but in the end the "old" p2 contains
@@ -3049,9 +3060,9 @@
         p3 = force_token()
         #
         p2 = new_with_vtable(descr=vref_descr)
+        setfield_gc(p2, p3, descr=virtualtokendescr)
+        setfield_gc(p2, NULL, descr=virtualforceddescr)
         setfield_gc(p0, p2, descr=nextdescr)
-        setfield_gc(p2, NULL, descr=virtualforceddescr)
-        setfield_gc(p2, p3, descr=virtualtokendescr)
         #
         call_may_force_n(i1, descr=mayforcevirtdescr)
         guard_not_forced() [i1]
@@ -3060,9 +3071,9 @@
         setfield_gc(p2, NULL, descr=virtualtokendescr)
         p1 = new_with_vtable(descr=nodesize)
         p1b = new_with_vtable(descr=nodesize)
-        setfield_gc(p2, p1, descr=virtualforceddescr)
         setfield_gc(p1b, 252, descr=valuedescr)
         setfield_gc(p1, p1b, descr=nextdescr)
+        setfield_gc(p2, p1, descr=virtualforceddescr)
         jump(p0, i1)
         """
         self.optimize_loop(ops, expected)
@@ -3089,9 +3100,9 @@
         p3 = force_token()
         #
         p2 = new_with_vtable(descr=vref_descr)
+        setfield_gc(p2, p3, descr=virtualtokendescr)
+        setfield_gc(p2, NULL, descr=virtualforceddescr)
         setfield_gc(p0, p2, descr=nextdescr)
-        setfield_gc(p2, NULL, descr=virtualforceddescr)
-        setfield_gc(p2, p3, descr=virtualtokendescr)
         #
         call_may_force_n(i1, descr=mayforcevirtdescr)
         guard_not_forced() [p2, i1]
@@ -3100,9 +3111,9 @@
         setfield_gc(p2, NULL, descr=virtualtokendescr)
         p1 = new_with_vtable(descr=nodesize)
         p1b = new_with_vtable(descr=nodesize)
-        setfield_gc(p2, p1, descr=virtualforceddescr)
         setfield_gc(p1b, i1, descr=valuedescr)
         setfield_gc(p1, p1b, descr=nextdescr)
+        setfield_gc(p2, p1, descr=virtualforceddescr)
         jump(p0, i1)
         """
         # the point of this test is that 'i1' should show up in the fail_args
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
@@ -93,7 +93,7 @@
                 optforce.get_box_replacement(op).set_forwarded(c_s)
                 return c_s
         self._is_virtual = False
-        lengthbox = self.getstrlen(op, optforce.optstring, self.mode)
+        lengthbox = self.getstrlen(op, optforce.optimizer.optstring, self.mode)
         newop = ResOperation(self.mode.NEWSTR, [lengthbox])
         if not we_are_translated():
             newop.name = 'FORCE'
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to