[pypy-svn] r78521 - pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test
arigo at codespeak.net
arigo at codespeak.net
Sat Oct 30 13:48:46 CEST 2010
Author: arigo
Date: Sat Oct 30 13:48:44 2010
New Revision: 78521
Added:
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizebasic.py
- copied, changed from r77505, pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
A copy of test_optimizeopt from trunk, which makes sense
to keep running without the OptUnroll optimization.
Copied: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizebasic.py (from r77505, pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py)
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizebasic.py Sat Oct 30 13:48:44 2010
@@ -6,7 +6,6 @@
from pypy.jit.metainterp.optimizefindnode import PerfectSpecializationFinder
import pypy.jit.metainterp.optimizeopt.optimizer as optimizeopt
import pypy.jit.metainterp.optimizeopt.virtualize as virtualize
-from pypy.jit.metainterp.optimizeopt import optimize_loop_1
from pypy.jit.metainterp.optimizeutil import InvalidLoop
from pypy.jit.metainterp.history import AbstractDescr, ConstInt, BoxInt
from pypy.jit.metainterp.jitprof import EmptyProfiler
@@ -219,7 +218,7 @@
_kind2count = {history.INT: 1, history.REF: 2, history.FLOAT: 3}
return sorted(boxes, key=lambda box: _kind2count[box.type])
-class BaseTestOptimizeOpt(BaseTest):
+class BaseTestOptimizeBasic(BaseTest):
def invent_fail_descr(self, fail_args):
if fail_args is None:
@@ -240,24 +239,29 @@
def optimize_loop(self, ops, spectext, optops, checkspecnodes=True):
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
metainterp_sd = FakeMetaInterpStaticData(self.cpu)
if hasattr(self, 'vrefinfo'):
metainterp_sd.virtualref_info = self.vrefinfo
- optimize_loop_1(metainterp_sd, loop)
+ #
+ # XXX list the exact optimizations that are needed for each test
+ from pypy.jit.metainterp.optimizeopt import (OptIntBounds,
+ OptRewrite,
+ OptVirtualize,
+ OptString,
+ OptHeap,
+ Optimizer)
+ optimizations = [OptIntBounds(),
+ OptRewrite(),
+ OptVirtualize(),
+ OptString(),
+ OptHeap(),
+ ]
+ optimizer = Optimizer(metainterp_sd, loop, optimizations,
+ virtuals=True)
+ optimizer.propagate_all_forward()
#
expected = self.parse(optops)
print '\n'.join([str(o) for o in loop.operations])
@@ -490,6 +494,7 @@
[]
jump()
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Constant(myptr)', expected)
def test_ooisnull_oononnull_1(self):
@@ -752,10 +757,10 @@
p3sub = getfield_gc(p3, descr=nextdescr)
i3 = getfield_gc(p3sub, descr=valuedescr)
escape(i3)
- p1 = new_with_vtable(ConstClass(node_vtable))
p2sub = new_with_vtable(ConstClass(node_vtable2))
setfield_gc(p2sub, i1, descr=valuedescr)
setfield_gc(p2, p2sub, descr=nextdescr)
+ p1 = new_with_vtable(ConstClass(node_vtable))
jump(i1, p1, p2)
"""
# The same as test_p123_simple, but in the end the "old" p2 contains
@@ -827,8 +832,9 @@
i1 = int_add(i2, i)
jump(i, i1)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Not, Virtual(node_vtable, valuedescr=Not)',
- expected, checkspecnodes=False)
+ expected)
def test_virtual_float(self):
ops = """
@@ -843,6 +849,7 @@
f1 = float_add(f2, f)
jump(f, f1)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Not, Virtual(node_vtable, floatdescr=Not)',
expected, checkspecnodes=False)
@@ -860,6 +867,7 @@
i1 = int_add(i2, i)
jump(i, i1)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Not, Virtual(node_vtable, valuedescr=Not)',
expected)
@@ -894,6 +902,7 @@
# all constant-folded :-)
jump(p2)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, '''Virtual(node_vtable),
Virtual(node_vtable),
Not''',
@@ -931,6 +940,7 @@
"""
# the 'expected' is sub-optimal, but it should be done by another later
# optimization step. See test_find_nodes_default_field() for why.
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Virtual(node_vtable, valuedescr=Not)',
expected)
@@ -967,6 +977,7 @@
i3 = int_add(i0, i1)
jump(i3, i2)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Not, Virtual(node_vtable, valuedescr=Not)',
expected)
@@ -990,6 +1001,7 @@
i3 = int_add(i0, i1)
jump(i3, i2, i1)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops,
'''Not, Virtual(node_vtable,
valuedescr=Not,
@@ -1241,6 +1253,7 @@
guard_value(i3, 15) []
jump(i0, 20, i0)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Not, VArray(arraydescr, Not, Not)', expected)
def test_p123_array(self):
@@ -1291,6 +1304,7 @@
escape(i2)
jump(i1, i1)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Not, VStruct(ssize, adescr=Not)', expected)
def test_p123_vstruct(self):
@@ -1472,6 +1486,7 @@
escape(i1)
jump()
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Constant(myptr)', expected)
def test_duplicate_getfield_sideeffects_1(self):
@@ -1693,6 +1708,7 @@
setfield_gc(ConstPtr(myptr), i2, descr=valuedescr)
jump(i1, i2)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Constant(myptr), Not, Not', expected)
def test_duplicate_getarrayitem_1(self):
@@ -1847,6 +1863,7 @@
p3 = escape()
jump(i0, p3)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Not, Virtual(node_vtable, nextdescr=Not)',
expected)
@@ -1870,6 +1887,7 @@
p3 = escape()
jump(i0, p3)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Not, VArray(arraydescr2, Not)',
expected)
@@ -1903,6 +1921,7 @@
p2a = new_with_vtable(ConstClass(node_vtable))
jump(p2a, p3a)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Virtual(node_vtable2, nextdescr=Not, otherdescr=Not)', expected)
def test_bug_3bis(self):
@@ -1935,6 +1954,7 @@
escape(p3a)
jump(p2a, p3a)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, 'Virtual(node_vtable2, nextdescr=Not, otherdescr=Not)', expected)
def test_invalid_loop_1(self):
@@ -1945,6 +1965,7 @@
p2 = new_with_vtable(ConstClass(node_vtable))
jump(p2)
"""
+ py.test.skip("XXX")
py.test.raises(InvalidLoop, self.optimize_loop,
ops, 'Virtual(node_vtable)', None)
@@ -1972,6 +1993,7 @@
setfield_gc(p3, p4, descr=nextdescr)
jump(p3)
"""
+ py.test.skip("XXX")
py.test.raises(InvalidLoop, self.optimize_loop, ops,
'Virtual(node_vtable, nextdescr=Virtual(node_vtable))',
None)
@@ -2501,6 +2523,7 @@
guard_true(i0, descr=fdescr) [i1b]
jump(i1, i1, i1)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, '''Virtual(node_vtable, valuedescr=Not),
Not, Not''', expected)
self.check_expanded_fail_descr('''p0
@@ -2575,6 +2598,7 @@
guard_true(i1, descr=fdescr) [ia, iv, i2]
jump(1, 1, i2, NULL, i2)
"""
+ py.test.skip("XXX")
self.optimize_loop(ops, '''
Not,
VArray(arraydescr2,
@@ -2643,7 +2667,7 @@
''', rop.GUARD_TRUE)
-class TestLLtype(BaseTestOptimizeOpt, LLtypeMixin):
+class TestLLtype(BaseTestOptimizeBasic, LLtypeMixin):
def test_residual_call_does_not_invalidate_caches(self):
ops = """
@@ -4495,7 +4519,7 @@
# XXX str2unicode
-##class TestOOtype(BaseTestOptimizeOpt, OOtypeMixin):
+##class TestOOtype(BaseTestOptimizeBasic, OOtypeMixin):
## def test_instanceof(self):
## ops = """
More information about the Pypy-commit
mailing list