[pypy-svn] r78503 - pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test
hakanardo at codespeak.net
hakanardo at codespeak.net
Sat Oct 30 11:07:29 CEST 2010
Author: hakanardo
Date: Sat Oct 30 11:07:28 2010
New Revision: 78503
Modified:
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
(armin, hakanardo) fixed tests
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizeopt.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizeopt.py Sat Oct 30 11:07:28 2010
@@ -242,21 +242,9 @@
assert equaloplists(optimized.operations,
expected.operations, False, remap)
- def optimize_loop(self, ops, spectext, optops, checkspecnodes=True,
- expected_preamble=None):
+ def optimize_loop(self, ops, spectext, optops, expected_preamble=None):
loop = self.parse(ops)
- #
- if checkspecnodes:
- # verify that 'spectext' is indeed what optimizefindnode would
- # compute for this loop
- cpu = self.cpu
- perfect_specialization_finder = PerfectSpecializationFinder(cpu)
- perfect_specialization_finder.find_nodes_loop(loop)
- self.check_specnodes(loop.token.specnodes, spectext)
- else:
- # for cases where we want to see how optimizeopt behaves with
- # combinations different from the one computed by optimizefindnode
- loop.token.specnodes = self.unpack_specnodes(spectext)
+ loop.token.specnodes = self.unpack_specnodes(spectext)
#
self.loop = loop
loop.preamble = TreeLoop('preamble')
@@ -267,11 +255,16 @@
optimize_loop_1(metainterp_sd, loop)
#
expected = self.parse(optops)
+
print
- print "Ops: "
+ print loop.preamble.inputargs
+ print '\n'.join([str(o) for o in loop.preamble.operations])
+ print
+ print loop.inputargs
print '\n'.join([str(o) for o in loop.operations])
+ print
+
self.assert_equal(loop, expected)
-
if expected_preamble:
expected = self.parse(expected_preamble)
self.assert_equal(loop.preamble, expected)
@@ -414,13 +407,17 @@
guard_false(i2) []
jump(i0)
"""
- expected = """
+ preamble = """
[i0]
i1 = int_lt(i0, 0)
guard_true(i1) []
jump(i0)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [i0]
+ jump(i0)
+ """
+ self.optimize_loop(ops, 'Not', expected, expected_preamble=preamble)
def test_constant_boolrewrite_gt(self):
ops = """
@@ -431,13 +428,17 @@
guard_false(i2) []
jump(i0)
"""
- expected = """
+ preamble = """
[i0]
i1 = int_gt(i0, 0)
guard_true(i1) []
jump(i0)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [i0]
+ jump(i0)
+ """
+ self.optimize_loop(ops, 'Not', expected, expected_preamble=preamble)
def test_constant_boolrewrite_reflex(self):
ops = """
@@ -448,13 +449,17 @@
guard_true(i2) []
jump(i0)
"""
- expected = """
+ preamble = """
[i0]
i1 = int_gt(i0, 0)
guard_true(i1) []
jump(i0)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [i0]
+ jump(i0)
+ """
+ self.optimize_loop(ops, 'Not', expected, expected_preamble=preamble)
def test_constant_boolrewrite_reflex_invers(self):
ops = """
@@ -465,13 +470,17 @@
guard_false(i2) []
jump(i0)
"""
- expected = """
+ preamble = """
[i0]
i1 = int_gt(i0, 0)
guard_true(i1) []
jump(i0)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [i0]
+ jump(i0)
+ """
+ self.optimize_loop(ops, 'Not', expected, expected_preamble=preamble)
def test_remove_consecutive_guard_value_constfold(self):
ops = """
@@ -497,13 +506,13 @@
ops = """
[p1]
guard_value(p1, ConstPtr(myptr)) []
- jump(ConstPtr(myptr))
+ jump(p1)
"""
expected = """
[]
jump()
"""
- self.optimize_loop(ops, 'Constant(myptr)', expected)
+ self.optimize_loop(ops, 'Not', expected)
def test_ooisnull_oononnull_1(self):
ops = """
@@ -512,12 +521,16 @@
guard_nonnull(p0) []
jump(p0)
"""
- expected = """
+ preamble = """
[p0]
guard_class(p0, ConstClass(node_vtable)) []
jump(p0)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [p0]
+ jump(p0)
+ """
+ self.optimize_loop(ops, 'Not', expected, preamble)
def test_int_is_true_1(self):
ops = """
@@ -528,13 +541,17 @@
guard_true(i2) []
jump(i0)
"""
- expected = """
+ preamble = """
[i0]
i1 = int_is_true(i0)
guard_true(i1) []
jump(i0)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [i0]
+ jump(i0)
+ """
+ self.optimize_loop(ops, 'Not', expected, preamble)
def test_int_is_true_is_zero(self):
py.test.skip("XXX implement me")
@@ -561,12 +578,16 @@
guard_nonnull(p0) []
jump(p0)
"""
- expected = """
+ preamble = """
[p0]
guard_nonnull(p0) []
jump(p0)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [p0]
+ jump(p0)
+ """
+ self.optimize_loop(ops, 'Not', expected, preamble)
def test_ooisnull_on_null_ptr_1(self):
ops = """
@@ -594,12 +615,16 @@
guard_nonnull(p1) []
jump(p0)
"""
- expected = """
+ preamble = """
[p0]
guard_nonnull(p0) []
jump(p0)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [p0]
+ jump(p0)
+ """
+ self.optimize_loop(ops, 'Not', expected, preamble)
def test_oois_1(self):
ops = """
@@ -615,12 +640,16 @@
guard_false(i1) []
jump(p0)
"""
- expected = """
+ preamble = """
[p0]
guard_class(p0, ConstClass(node_vtable)) []
jump(p0)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [p0]
+ jump(p0)
+ """
+ self.optimize_loop(ops, 'Not', expected, preamble)
def test_nonnull_1(self):
ops = """
@@ -673,13 +702,17 @@
guard_value(i1, 1) [i]
jump(i)
"""
- expected = """
+ preamble = """
[i]
i1 = int_lt(i, 3)
guard_true(i1) [i]
jump(i)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [i]
+ jump(i)
+ """
+ self.optimize_loop(ops, 'Not', expected, preamble)
def test_guard_value_to_guard_false(self):
ops = """
@@ -688,13 +721,17 @@
guard_value(i1, 0) [i]
jump(i)
"""
- expected = """
+ preamble = """
[i]
i1 = int_is_true(i)
guard_false(i1) [i]
jump(i)
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ [i]
+ jump(i)
+ """
+ self.optimize_loop(ops, 'Not', expected, preamble)
def test_guard_value_on_nonbool(self):
ops = """
@@ -703,13 +740,17 @@
guard_value(i1, 0) [i]
jump(i)
"""
- expected = """
+ preamble = """
[i]
i1 = int_add(i, 3)
guard_value(i1, 0) [i]
- jump(-3)
+ jump()
"""
- self.optimize_loop(ops, 'Not', expected)
+ expected = """
+ []
+ jump()
+ """
+ self.optimize_loop(ops, 'Not', expected, preamble)
def test_int_is_true_of_bool(self):
ops = """
@@ -720,13 +761,17 @@
guard_value(i4, 0) [i0, i1]
jump(i0, i1)
"""
- expected = """
+ preamble = """
[i0, i1]
i2 = int_gt(i0, i1)
guard_false(i2) [i0, i1]
jump(i0, i1)
"""
- self.optimize_loop(ops, 'Not, Not', expected)
+ expected = """
+ [i0, i1]
+ jump(i0, i1)
+ """
+ self.optimize_loop(ops, 'Not, Not', expected, preamble)
@@ -740,8 +785,22 @@
setfield_gc(p1, i1, descr=valuedescr)
jump(i1, p1, p2)
"""
+ preamble = """
+ [i1, p2, p3]
+ i3 = getfield_gc(p3, descr=valuedescr)
+ escape(i3)
+ jump(i1, p2)
+ """
+ expected = """
+ [i1, p2]
+ i3 = getfield_gc(p2, descr=valuedescr)
+ escape(i3)
+ p3 = new_with_vtable(ConstClass(node_vtable))
+ setfield_gc(p3, i1, descr=valuedescr)
+ jump(i1, p3)
+ """
# We cannot track virtuals that survive for more than two iterations.
- self.optimize_loop(ops, 'Not, Not, Not', ops)
+ self.optimize_loop(ops, 'Not, Not, Not', expected, preamble)
def test_p123_nested(self):
ops = """
@@ -757,7 +816,24 @@
"""
# The same as test_p123_simple, but with a virtual containing another
# virtual.
- self.optimize_loop(ops, 'Not, Not, Not', ops)
+ preamble = """
+ [i1, p2, p3]
+ i3 = getfield_gc(p3, descr=valuedescr)
+ escape(i3)
+ jump(i1, p2)
+ """
+ expected = """
+ [i1, p2]
+ i3 = getfield_gc(p2, descr=valuedescr)
+ escape(i3)
+ p4 = new_with_vtable(ConstClass(node_vtable))
+ setfield_gc(p4, i1, descr=valuedescr)
+ p1sub = new_with_vtable(ConstClass(node_vtable2))
+ setfield_gc(p1sub, i1, descr=valuedescr)
+ setfield_gc(p4, p1sub, descr=nextdescr)
+ jump(i1, p4)
+ """
+ self.optimize_loop(ops, 'Not, Not, Not', expected, preamble)
def test_p123_anti_nested(self):
ops = """
@@ -773,7 +849,23 @@
"""
# The same as test_p123_simple, but in the end the "old" p2 contains
# a "young" virtual p2sub. Make sure it is all forced.
- self.optimize_loop(ops, 'Not, Not, Not', ops)
+ preamble = """
+ [i1, p2, p3]
+ p3sub = getfield_gc(p3, descr=nextdescr)
+ i3 = getfield_gc(p3sub, descr=valuedescr)
+ escape(i3)
+ jump(i1, p2)
+ """
+ expected = """
+ [i1, p3]
+ p2sub = new_with_vtable(ConstClass(node_vtable2))
+ setfield_gc(p2sub, i1, descr=valuedescr)
+ setfield_gc(p3, p2sub, descr=nextdescr)
+ escape(i1)
+ p4 = new_with_vtable(ConstClass(node_vtable))
+ jump(i1, p4)
+ """
+ self.optimize_loop(ops, 'Not, Not, Not', expected, preamble)
# ----------
More information about the Pypy-commit
mailing list