[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