[pypy-commit] pypy optresult: whack a bit at those tests

fijal noreply at buildbot.pypy.org
Mon May 25 16:11:01 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77537:602ae22acbf9
Date: 2015-05-25 16:00 +0200
http://bitbucket.org/pypy/pypy/changeset/602ae22acbf9/

Log:	whack a bit at those tests

diff --git a/rpython/jit/metainterp/optimizeopt/intbounds.py b/rpython/jit/metainterp/optimizeopt/intbounds.py
--- a/rpython/jit/metainterp/optimizeopt/intbounds.py
+++ b/rpython/jit/metainterp/optimizeopt/intbounds.py
@@ -181,7 +181,8 @@
         # b.has_lower
         if b.has_lower and b.has_upper:
             # Synthesize the reverse op for optimize_default to reuse
-            self.pure(rop.INT_RSHIFT, [op, op.getarg(1)], op.getarg(0))
+            self.pure_from_args(rop.INT_RSHIFT,
+                                [op, op.getarg(1)], op.getarg(0))
 
     def optimize_INT_RSHIFT(self, op):
         v1 = self.getvalue(op.getarg(0))
@@ -211,12 +212,12 @@
             # reuse, as well as the reverse op
             elif opnum == rop.INT_ADD_OVF:
                 #self.pure(rop.INT_ADD, args[:], result)
-                self.pure(rop.INT_SUB, [result, args[1]], args[0])
-                self.pure(rop.INT_SUB, [result, args[0]], args[1])
+                self.pure_from_args(rop.INT_SUB, [result, args[1]], args[0])
+                self.pure_from_args(rop.INT_SUB, [result, args[0]], args[1])
             elif opnum == rop.INT_SUB_OVF:
                 #self.pure(rop.INT_SUB, args[:], result)
-                self.pure(rop.INT_ADD, [result, args[1]], args[0])
-                self.pure(rop.INT_SUB, [args[0], result], args[1])
+                self.pure_from_args(rop.INT_ADD, [result, args[1]], args[0])
+                self.pure_from_args(rop.INT_SUB, [args[0], result], args[1])
             #elif opnum == rop.INT_MUL_OVF:
             #    self.pure(rop.INT_MUL, args[:], result)
         self.emit_operation(op)
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
@@ -367,9 +367,13 @@
     def new_const_item(self, arraydescr):
         return self.optimizer.new_const_item(arraydescr)
 
-    def pure(self, opnum, args, result):
+    def pure(self, opnum, result):
         if self.optimizer.optpure:
-            self.optimizer.optpure.pure(opnum, args, result)
+            self.optimizer.optpure.pure(opnum, result)
+
+    def pure_from_args(self, opnum, args, result):
+        if self.optimizer.optpure:
+            self.optimizer.optpure.pure_from_args(opnum, args, result)
 
     def has_pure_result(self, opnum, args, descr):
         if self.optimizer.optpure:
@@ -747,21 +751,27 @@
             return
         optpure = self.optpure
         if op.getopnum() == rop.INT_ADD:
-            optpure.pure(rop.INT_ADD, [op.getarg(1), op.getarg(0)], op)
+            optpure.pure_from_args(rop.INT_ADD, [op.getarg(1), op.getarg(0)],
+                                   op)
             # Synthesize the reverse op for optimize_default to reuse
-            optpure.pure(rop.INT_SUB, [op, op.getarg(1)], op.getarg(0))
-            optpure.pure(rop.INT_SUB, [op, op.getarg(0)], op.getarg(1))
+            optpure.pure_from_args(rop.INT_SUB, [op, op.getarg(1)],
+                                   op.getarg(0))
+            optpure.pure_from_args(rop.INT_SUB,
+                                   [op, op.getarg(0)], op.getarg(1))
         elif op.getopnum() == rop.INT_SUB:
-            optpure.pure(rop.INT_ADD, [op, op.getarg(1)], op.getarg(0))
-            optpure.pure(rop.INT_SUB, [op.getarg(0), op], op.getarg(1))
+            optpure.pure_from_args(rop.INT_ADD,
+                                   [op, op.getarg(1)], op.getarg(0))
+            optpure.pure_from_args(rop.INT_SUB,
+                                   [op.getarg(0), op], op.getarg(1))
         elif op.getopnum() == rop.FLOAT_MUL:
-            optpure.pure(rop.FLOAT_MUL, [op.getarg(1), op.getarg(0)], op)
+            optpure.pure_from_args(rop.FLOAT_MUL,
+                                   [op.getarg(1), op.getarg(0)], op)
         elif op.getopnum() == rop.FLOAT_NEG:
-            optpure.pure(rop.FLOAT_NEG, [op], op.getarg(0))
+            optpure.pure_from_args(rop.FLOAT_NEG, [op], op.getarg(0))
         elif op.getopnum() == rop.CAST_INT_TO_PTR:
-            optpure.pure(rop.CAST_PTR_TO_INT, [op], op.getarg(0))
+            optpure.pure_from_args(rop.CAST_PTR_TO_INT, [op], op.getarg(0))
         elif op.getopnum() == rop.CAST_PTR_TO_INT:
-            optpure.pure(rop.CAST_INT_TO_PTR, [op], op.getarg(0))
+            optpure.pure_from_args(rop.CAST_INT_TO_PTR, [op], op.getarg(0))
 
     #def optimize_GUARD_NO_OVERFLOW(self, op):
     #    # otherwise the default optimizer will clear fields, which is unwanted
diff --git a/rpython/jit/metainterp/optimizeopt/pure.py b/rpython/jit/metainterp/optimizeopt/pure.py
--- a/rpython/jit/metainterp/optimizeopt/pure.py
+++ b/rpython/jit/metainterp/optimizeopt/pure.py
@@ -179,16 +179,17 @@
     def setup(self):
         self.optimizer.optpure = self
 
-    def pure(self, opnum, args, op):
+    def pure(self, opnum, op):
         op = self.get_box_replacement(op)
-        if not isinstance(op, AbstractResOp):
-            newop = ResOperation(opnum, [
-                self.get_box_replacement(arg) for arg in args])
-            newop.set_forwarded(op)
-            op = newop
         recentops = self.getrecentops(opnum)
         recentops.add(op)
 
+    def pure_from_args(self, opnum, args, op):
+        newop = ResOperation(opnum,
+                             [self.get_box_replacement(arg) for arg in args])
+        newop.set_forwarded(op)
+        self.pure(opnum, newop)
+
     def has_pure_result(self, opnum, args, descr):
         return False
     # XXX
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
@@ -871,9 +871,9 @@
         i1 = getfield_gc(p0, descr=valuedescr)
         i2 = int_sub(i1, 1)
         i3 = int_add(i0, i1)
-        p2 = new_with_vtable(ConstClass(node_vtable2))
+        p2 = new_with_vtable(descr=nodesize2)
         setfield_gc(p2, i1, descr=valuedescr)
-        p1 = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
         setfield_gc(p1, i2, descr=valuedescr)
         setfield_gc(p1, p2, descr=nextdescr)
         jump(i3, p1)
@@ -1565,10 +1565,9 @@
         self.optimize_loop(ops, expected)
 
     def test_duplicate_setfield_5(self):
-        xxx
         ops = """
         [p0, i1]
-        p1 = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
         setfield_gc(p1, i1, descr=valuedescr)
         setfield_gc(p0, p1, descr=nextdescr)
         setfield_raw(i1, i1, descr=valuedescr)    # random op with side-effects
@@ -1613,7 +1612,7 @@
         # a virtual, which we try hard to keep virtual
         ops = """
         [p1, i2, i3]
-        p2 = new_with_vtable(ConstClass(node_vtable))
+        p2 = new_with_vtable(descr=nodesize)
         setfield_gc(p1, p2, descr=nextdescr)
         guard_true(i3) []
         i4 = int_neg(i2)
@@ -1632,7 +1631,7 @@
     def test_duplicate_setfield_residual_guard_3(self):
         ops = """
         [p1, i2, i3]
-        p2 = new_with_vtable(ConstClass(node_vtable))
+        p2 = new_with_vtable(descr=nodesize)
         setfield_gc(p2, i2, descr=valuedescr)
         setfield_gc(p1, p2, descr=nextdescr)
         guard_true(i3) []
@@ -1883,7 +1882,7 @@
         guard_nonnull(p4) []
         escape_n(p4)
         #
-        p2 = new_with_vtable(ConstClass(node_vtable))
+        p2 = new_with_vtable(descr=nodesize)
         p3 = escape_r()
         setfield_gc(p2, p3, descr=nextdescr)
         jump(i0, p2)
@@ -1937,8 +1936,8 @@
         guard_class(p3, ConstClass(node_vtable)) []
         setfield_gc(p3, p2, descr=otherdescr)
         p1a = new_with_vtable(ConstClass(node_vtable2))
-        p2a = new_with_vtable(ConstClass(node_vtable))
-        p3a = new_with_vtable(ConstClass(node_vtable))
+        p2a = new_with_vtable(descr=nodesize)
+        p3a = new_with_vtable(descr=nodesize)
         escape_n(p3a)
         setfield_gc(p1a, p2a, descr=nextdescr)
         setfield_gc(p1a, p3a, descr=otherdescr)
@@ -1949,9 +1948,9 @@
         guard_class(p2, ConstClass(node_vtable)) []
         guard_class(p3, ConstClass(node_vtable)) []
         setfield_gc(p3, p2, descr=otherdescr)
-        p3a = new_with_vtable(ConstClass(node_vtable))
+        p3a = new_with_vtable(descr=nodesize)
         escape_n(p3a)
-        p2a = new_with_vtable(ConstClass(node_vtable))
+        p2a = new_with_vtable(descr=nodesize)
         jump(p2a, p3a)
         """
         py.test.skip("XXX")
@@ -1969,9 +1968,9 @@
         guard_nonnull(12) []
         guard_class(p3, ConstClass(node_vtable)) []
         p1a = new_with_vtable(ConstClass(node_vtable2))
-        p2a = new_with_vtable(ConstClass(node_vtable))
+        p2a = new_with_vtable(descr=nodesize)
         setfield_gc(p3, p2a, descr=otherdescr)
-        p3a = new_with_vtable(ConstClass(node_vtable))
+        p3a = new_with_vtable(descr=nodesize)
         escape_n(p3a)
         setfield_gc(p1a, p2a, descr=nextdescr)
         setfield_gc(p1a, p3a, descr=otherdescr)
@@ -1981,9 +1980,9 @@
         [p2, p3]
         guard_class(p2, ConstClass(node_vtable)) []
         guard_class(p3, ConstClass(node_vtable)) []
-        p2a = new_with_vtable(ConstClass(node_vtable))
+        p2a = new_with_vtable(descr=nodesize)
         setfield_gc(p3, p2a, descr=otherdescr)
-        p3a = new_with_vtable(ConstClass(node_vtable))
+        p3a = new_with_vtable(descr=nodesize)
         escape_n(p3a)
         jump(p2a, p3a)
         """
@@ -1995,7 +1994,7 @@
         [p1]
         guard_isnull(p1) []
         #
-        p2 = new_with_vtable(ConstClass(node_vtable))
+        p2 = new_with_vtable(descr=nodesize)
         jump(p2)
         """
         py.test.skip("XXX")
@@ -2008,7 +2007,7 @@
         [p1]
         guard_class(p1, ConstClass(node_vtable2)) []
         #
-        p2 = new_with_vtable(ConstClass(node_vtable))
+        p2 = new_with_vtable(descr=nodesize)
         escape_n(p2)      # prevent it from staying Virtual
         jump(p2)
         """
@@ -2021,8 +2020,8 @@
         p2 = getfield_gc_r(p1, descr=nextdescr)
         guard_isnull(p2) []
         #
-        p3 = new_with_vtable(ConstClass(node_vtable))
-        p4 = new_with_vtable(ConstClass(node_vtable))
+        p3 = new_with_vtable(descr=nodesize)
+        p4 = new_with_vtable(descr=nodesize)
         setfield_gc(p3, p4, descr=nextdescr)
         jump(p3)
         """
@@ -2522,7 +2521,7 @@
         ops = """
         [i1, i3]
         # first rename i3 into i4
-        p1 = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
         setfield_gc(p1, i3, descr=valuedescr)
         i4 = getfield_gc_i(p1, descr=valuedescr)
         #
@@ -2541,7 +2540,7 @@
     def test_expand_fail_2(self):
         ops = """
         [i1, i2]
-        p1 = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
         setfield_gc(p1, i2, descr=valuedescr)
         setfield_gc(p1, p1, descr=nextdescr)
         guard_true(i1) [p1]
@@ -2560,8 +2559,8 @@
     def test_expand_fail_3(self):
         ops = """
         [i1, i2, i3, p3]
-        p1 = new_with_vtable(ConstClass(node_vtable))
-        p2 = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
+        p2 = new_with_vtable(descr=nodesize)
         setfield_gc(p1, 1, descr=valuedescr)
         setfield_gc(p1, p2, descr=nextdescr)
         setfield_gc(p2, i2, descr=valuedescr)
@@ -2585,10 +2584,10 @@
                     'i2,p1,p2', 'i2,p2,p1']:
             ops = """
             [i1, i2, i3]
-            p1 = new_with_vtable(ConstClass(node_vtable))
+            p1 = new_with_vtable(descr=nodesize)
             setfield_gc(p1, i3, descr=valuedescr)
             i4 = getfield_gc_i(p1, descr=valuedescr)   # copy of i3
-            p2 = new_with_vtable(ConstClass(node_vtable))
+            p2 = new_with_vtable(descr=nodesize)
             setfield_gc(p1, i2, descr=valuedescr)
             setfield_gc(p1, p2, descr=nextdescr)
             setfield_gc(p2, i2, descr=valuedescr)
@@ -2609,8 +2608,8 @@
     def test_expand_fail_5(self):
         ops = """
         [i1, i2, i3, i4]
-        p1 = new_with_vtable(ConstClass(node_vtable))
-        p2 = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
+        p2 = new_with_vtable(descr=nodesize)
         setfield_gc(p1, i4, descr=valuedescr)
         setfield_gc(p1, p2, descr=nextdescr)
         setfield_gc(p2, i2, descr=valuedescr)
@@ -2633,7 +2632,7 @@
         ops = """
         [p0, i0, i1]
         guard_true(i0) [p0]
-        p1 = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
         setfield_gc(p1, i1, descr=valuedescr)
         jump(p1, i1, i1)
         """
@@ -2701,7 +2700,7 @@
         setarrayitem_gc(p1a, 1, p5s, descr=arraydescr2)
         guard_true(i1) [p1a]
         p2s = new(descr=ssize)
-        p3v = new_with_vtable(ConstClass(node_vtable))
+        p3v = new_with_vtable(descr=nodesize)
         p4a = new_array(2, descr=arraydescr2)
         setfield_gc(p2s, i1, descr=adescr)
         setfield_gc(p2s, p3v, descr=bdescr)
@@ -2734,7 +2733,7 @@
     def test_expand_fail_lazy_setfield_1(self):
         ops = """
         [p1, i2, i3]
-        p2 = new_with_vtable(ConstClass(node_vtable))
+        p2 = new_with_vtable(descr=nodesize)
         setfield_gc(p2, i2, descr=valuedescr)
         setfield_gc(p1, p2, descr=nextdescr)
         guard_true(i3) []
@@ -2759,7 +2758,7 @@
     def test_expand_fail_lazy_setfield_2(self):
         ops = """
         [i2, i3]
-        p2 = new_with_vtable(ConstClass(node_vtable))
+        p2 = new_with_vtable(descr=nodesize)
         setfield_gc(p2, i2, descr=valuedescr)
         setfield_gc(ConstPtr(myptr), p2, descr=nextdescr)
         guard_true(i3) []
@@ -3036,8 +3035,8 @@
         ops = """
         [p0, i1]
         #
-        p1 = new_with_vtable(ConstClass(node_vtable))
-        p1b = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
+        p1b = new_with_vtable(descr=nodesize)
         setfield_gc(p1b, 252, descr=valuedescr)
         setfield_gc(p1, p1b, descr=nextdescr)
         #
@@ -3062,8 +3061,8 @@
         guard_not_forced() [i1]
         #
         setfield_gc(p0, NULL, descr=nextdescr)
-        p1 = new_with_vtable(ConstClass(node_vtable))
-        p1b = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
+        p1b = new_with_vtable(descr=nodesize)
         setfield_gc(p1b, 252, descr=valuedescr)
         setfield_gc(p1, p1b, descr=nextdescr)
         setfield_gc(p2, p1, descr=virtualforceddescr)
@@ -3076,8 +3075,8 @@
         ops = """
         [p0, i1]
         #
-        p1 = new_with_vtable(ConstClass(node_vtable))
-        p1b = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
+        p1b = new_with_vtable(descr=nodesize)
         setfield_gc(p1b, i1, descr=valuedescr)
         setfield_gc(p1, p1b, descr=nextdescr)
         #
@@ -3102,8 +3101,8 @@
         guard_not_forced() [p2, i1]
         #
         setfield_gc(p0, NULL, descr=nextdescr)
-        p1 = new_with_vtable(ConstClass(node_vtable))
-        p1b = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
+        p1b = new_with_vtable(descr=nodesize)
         setfield_gc(p1b, i1, descr=valuedescr)
         setfield_gc(p1, p1b, descr=nextdescr)
         setfield_gc(p2, p1, descr=virtualforceddescr)
@@ -3122,8 +3121,8 @@
         ops = """
         [p0, i1]
         #
-        p1 = new_with_vtable(ConstClass(node_vtable))
-        p1b = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
+        p1b = new_with_vtable(descr=nodesize)
         setfield_gc(p1b, i1, descr=valuedescr)
         setfield_gc(p1, p1b, descr=nextdescr)
         #
@@ -3160,7 +3159,7 @@
     def test_vref_virtual_after_finish(self):
         ops = """
         [i1]
-        p1 = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
         p2 = virtual_ref(p1, 7)
         escape_n(p2)
         virtual_ref_finish(p2, p1)
@@ -3175,7 +3174,7 @@
         setfield_gc(p2, NULL, descr=virtualforceddescr)
         setfield_gc(p2, p3, descr=virtualtokendescr)
         escape_n(p2)
-        p1 = new_with_vtable(ConstClass(node_vtable))
+        p1 = new_with_vtable(descr=nodesize)
         setfield_gc(p2, p1, descr=virtualforceddescr)
         setfield_gc(p2, NULL, descr=virtualtokendescr)
         call_may_force_n(i1, descr=mayforcevirtdescr)


More information about the pypy-commit mailing list