[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