[pypy-commit] pypy vecopt-merge: dependency tests pass again

plan_rich noreply at buildbot.pypy.org
Thu Sep 10 14:38:47 CEST 2015


Author: Richard Plangger <planrichi at gmail.com>
Branch: vecopt-merge
Changeset: r79584:8e6bb4ab9549
Date: 2015-09-10 14:38 +0200
http://bitbucket.org/pypy/pypy/changeset/8e6bb4ab9549/

Log:	dependency tests pass again

diff --git a/rpython/jit/metainterp/optimizeopt/dependency.py b/rpython/jit/metainterp/optimizeopt/dependency.py
--- a/rpython/jit/metainterp/optimizeopt/dependency.py
+++ b/rpython/jit/metainterp/optimizeopt/dependency.py
@@ -27,10 +27,20 @@
 
 LOAD_COMPLEX_OBJ = [ (rop.GETARRAYITEM_GC_I, 0, 1)
                    , (rop.GETARRAYITEM_GC_F, 0, 1)
+                   , (rop.GETARRAYITEM_GC_R, 0, 1)
                    , (rop.GETARRAYITEM_RAW_I, 0, 1)
                    , (rop.GETARRAYITEM_RAW_F, 0, 1)
                    , (rop.RAW_LOAD_I, 0, 1)
                    , (rop.RAW_LOAD_F, 0, 1)
+                   , (rop.GETINTERIORFIELD_GC_I, 0, 1)
+                   , (rop.GETINTERIORFIELD_GC_F, 0, 1)
+                   , (rop.GETINTERIORFIELD_GC_R, 0, 1)
+                   , (rop.GETFIELD_GC_I, 0, -1)
+                   , (rop.GETFIELD_GC_F, 0, -1)
+                   , (rop.GETFIELD_GC_R, 0, -1)
+                   , (rop.GETFIELD_RAW_I, 0, -1)
+                   , (rop.GETFIELD_RAW_F, 0, -1)
+                   , (rop.GETFIELD_RAW_R, 0, -1)
                    ]
 
 class Path(object):
@@ -209,7 +219,7 @@
             # if it is a constant argument it cannot be destroyed.
             # neither can a box float be destroyed. BoxInt can
             # contain a reference thus it is assumed to be destroyed
-            if isinstance(arg, Const) or isinstance(arg, BoxFloat):
+            if arg.is_constant() or arg.type == 'f':
                 args.append((arg, None, False))
             else:
                 args.append((arg, None, True))
@@ -556,7 +566,7 @@
             # definition of a new variable
             if op.type != 'v':
                 # In SSA form. Modifications get a new variable
-                tracker.define(op.result(), node)
+                tracker.define(op, node)
             # usage of defined variables
             if op.is_always_pure() or op.is_final():
                 # normal case every arguments definition is set
@@ -604,10 +614,10 @@
         if guard_opnum in (rop.GUARD_TRUE, rop.GUARD_FALSE):
             for dep in guard_node.depends():
                 op = dep.to.getoperation()
-                if op.returns_bool_result() and op.result == guard_op.getarg(0):
+                if op.returns_bool_result() and op is guard_op.getarg(0):
                     guard_node.guard_bool_bool_node = dep.to
                     for arg in op.getarglist():
-                        if isinstance(arg, Box):
+                        if not arg.is_constant():
                             self.guard_exit_dependence(guard_node, arg, tracker)
                     break
             else:
@@ -619,7 +629,7 @@
         elif guard_op.is_foldable_guard():
             # these guards carry their protected variables directly as a parameter
             for arg in guard_node.getoperation().getarglist():
-                if isinstance(arg, Box):
+                if not arg.is_constant():
                     self.guard_exit_dependence(guard_node, arg, tracker)
         elif guard_opnum == rop.GUARD_NOT_FORCED_2:
             # must be emitted before finish, thus delayed the longest
@@ -873,7 +883,7 @@
 
     multiplicative_func_source = """
     def operation_{name}(self, op, node):
-        box_r = op.result
+        box_r = op
         if not box_r:
             return
         box_a0 = op.getarg(0)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
@@ -302,7 +302,7 @@
     def test_exception_dep(self):
         ops="""
         [p0, i1, i2] # 0: 1,3?
-        i4 = call(p0, 1, descr=nonwritedescr) # 1: 2,3
+        i4 = call_i(p0, 1, descr=nonwritedescr) # 1: 2,3
         guard_no_exception() [] # 2: 3
         jump(p0, i1, i2) # 3:
         """
@@ -312,9 +312,9 @@
         ops="""
         [p0, p1, i2] # 0: 1,2?,3?,4?,5?
         i3 = int_add(i2,1) # 1: 2
-        i4 = call(p0, i3, descr=nonwritedescr) # 2: 3,4,5?
+        i4 = call_i(p0, i3, descr=nonwritedescr) # 2: 3,4,5?
         guard_no_exception() [i2] # 3: 4?,5?
-        p2 = getarrayitem_gc(p1,i3,descr=intarraydescr) # 4: 5
+        p2 = getarrayitem_gc_r(p1, i3, descr=arraydescr) # 4: 5
         jump(p2, p1, i3) # 5:
         """
         self.assert_dependencies(ops, full_check=True)
@@ -323,9 +323,9 @@
         ops="""
         [p0, p1, i2, i5] # 0: 1,2?,3?,4?,5?
         i3 = int_add(i2,1) # 1: 2
-        i4 = call(i5, i3, descr=nonwritedescr) # 2: 3,4,5?
+        i4 = call_i(i5, i3, descr=nonwritedescr) # 2: 3,4,5?
         guard_no_exception() [i2] # 3: 5?
-        p2 = getarrayitem_gc(p1,i3,descr=chararraydescr) # 4: 5
+        p2 = getarrayitem_gc_r(p1,i3,descr=chararraydescr) # 4: 5
         jump(p2, p1, i3, i5) # 5:
         """
         self.assert_dependencies(ops, full_check=True)
@@ -333,11 +333,11 @@
     def test_not_forced(self):
         ops="""
         [p0, p1, i2, i5] # 0: 1,2,4?,5,6
-        i4 = call(i5, i2, descr=nonwritedescr) # 1: 2,4,6
+        i4 = call_i(i5, i2, descr=nonwritedescr) # 1: 2,4,6
         guard_not_forced() [i2] # 2: 3
         guard_no_exception() [] # 3: 6
         i3 = int_add(i2,1) # 4: 5
-        p2 = getarrayitem_gc(p1,i3,descr=chararraydescr) # 5: 6
+        p2 = getarrayitem_gc_r(p1,i3,descr=chararraydescr) # 5: 6
         jump(p2, p1, i2, i5) # 6:
         """
         self.assert_dependencies(ops, full_check=True)
@@ -348,7 +348,7 @@
         ops="""
         [p0, i1] # 0: 1,2?,3?,4?
         setarrayitem_raw(p0, i1, 1, descr=floatarraydescr) # 1: 2,3
-        i2 = getarrayitem_raw(p0, i1, descr=floatarraydescr) # 2: 4
+        i2 = getarrayitem_raw_i(p0, i1, descr=floatarraydescr) # 2: 4
         setarrayitem_raw(p0, i1, 2, descr=floatarraydescr) # 3: 4
         jump(p0, i2) # 4:
         """
@@ -383,22 +383,22 @@
         ops = """
         [i0, i1, i2, i3, i4, i5, i6, i7] # 0: 1,2,3,4,6,7,8,9,10,12,14,17,19,20,21
         i9 = int_mul(i0, 8) # 1: 2
-        i10 = raw_load(i3, i9, descr=intarraydescr) # 2: 5, 10
+        i10 = raw_load_i(i3, i9, descr=arraydescr) # 2: 5, 10
         i11 = int_mul(i0, 8) # 3: 4
-        i12 = raw_load(i4, i11, descr=intarraydescr) # 4: 5,10
+        i12 = raw_load_i(i4, i11, descr=arraydescr) # 4: 5,10
         i13 = int_add(i10, i12) # 5: 7,10
         i14 = int_mul(i0, 8) # 6: 7
-        raw_store(i5, i14, i13, descr=intarraydescr) # 7: 21
+        raw_store(i5, i14, i13, descr=arraydescr) # 7: 21
         i16 = int_add(i0, 1) # 8: 9,10,11,13,16,18
         i17 = int_lt(i16, i7) # 9: 10
         guard_true(i17) [i7, i13, i5, i4, i3, i12, i10, i16] # 10: 11,13,16,18,19,21
         i18 = int_mul(i16, 8) # 11:
-        i19 = raw_load(i3, i18, descr=intarraydescr) # 12:
+        i19 = raw_load_i(i3, i18, descr=arraydescr) # 12:
         i20 = int_mul(i16, 8) # 13:
-        i21 = raw_load(i4, i20, descr=intarraydescr) # 14:
+        i21 = raw_load_i(i4, i20, descr=arraydescr) # 14:
         i22 = int_add(i19, i21) # 15:
         i23 = int_mul(i16, 8) # 16:
-        raw_store(i5, i23, i22, descr=intarraydescr) # 17:
+        raw_store(i5, i23, i22, descr=arraydescr) # 17:
         i24 = int_add(i16, 1) # 18:
         i25 = int_lt(i24, i7) # 19:
         guard_true(i25) [i7, i22, i5, i4, i3, i21, i19, i24] # 20:
@@ -408,11 +408,10 @@
         self.assert_dependent(2,12)
 
     def test_getfield(self):
-        pass 
         trace = """
         [p0, p1] # 0: 1,2,5
-        p2 = getfield_gc(p0) # 1: 3,5
-        p3 = getfield_gc(p0) # 2: 4
+        p2 = getfield_gc_r(p0) # 1: 3,5
+        p3 = getfield_gc_r(p0) # 2: 4
         guard_nonnull(p2) [p2] # 3: 4,5
         guard_nonnull(p3) [p3] # 4: 5
         jump(p0,p2) # 5:
@@ -424,10 +423,10 @@
         trace = """
         [p0, p1, p5, p6, p7, p9, p11, p12] # 0: 1,6
         guard_early_exit() [] # 1: 2,4,6,7
-        p13 = getfield_gc(p9) # 2: 3,5,6
+        p13 = getfield_gc_r(p9) # 2: 3,5,6
         guard_nonnull(p13) [] # 3: 5,6
-        i14 = getfield_gc(p9) # 4: 6
-        p15 = getfield_gc(p13) # 5: 6
+        i14 = getfield_gc_i(p9) # 4: 6
+        p15 = getfield_gc_r(p13) # 5: 6
         guard_class(p15, 140737326900656) [p1, p0, p9, i14, p15, p13, p5, p6, p7] # 6: 7
         jump(p0,p1,p5,p6,p7,p9,p11,p12) # 7:
         """


More information about the pypy-commit mailing list