[pypy-commit] pypy jit-refactor-tests: converted tests
hakanardo
noreply at buildbot.pypy.org
Sun Nov 6 20:58:00 CET 2011
Author: Hakan Ardo <hakan at debian.org>
Branch: jit-refactor-tests
Changeset: r48835:c16efa936b3b
Date: 2011-11-06 20:57 +0100
http://bitbucket.org/pypy/pypy/changeset/c16efa936b3b/
Log: converted tests
diff --git a/pypy/jit/metainterp/test/test_loop.py b/pypy/jit/metainterp/test/test_loop.py
--- a/pypy/jit/metainterp/test/test_loop.py
+++ b/pypy/jit/metainterp/test/test_loop.py
@@ -60,7 +60,8 @@
assert res == f(6, 13)
self.check_loop_count(1)
if self.enable_opts:
- self.check_loops(getfield_gc = 0, setfield_gc = 1)
+ self.check_resops(setfield_gc=2, getfield_gc=0)
+
def test_loop_with_two_paths(self):
from pypy.rpython.lltypesystem import lltype
@@ -180,7 +181,10 @@
assert res == 42
self.check_loop_count(1)
# the 'int_eq' and following 'guard' should be constant-folded
- self.check_loops(int_eq=0, guard_true=1, guard_false=0)
+ if 'unroll' in self.enable_opts:
+ self.check_resops(int_eq=0, guard_true=2, guard_false=0)
+ else:
+ self.check_resops(int_eq=0, guard_true=1, guard_false=0)
if self.basic:
found = 0
for op in get_stats().loops[0]._all_operations():
@@ -643,8 +647,12 @@
res = self.meta_interp(main_interpreter_loop, [1])
assert res == 102
self.check_loop_count(1)
- self.check_loops({'int_add' : 3, 'int_gt' : 1,
- 'guard_false' : 1, 'jump' : 1})
+ if 'unroll' in self.enable_opts:
+ self.check_resops({'int_add' : 6, 'int_gt' : 2,
+ 'guard_false' : 2, 'jump' : 2})
+ else:
+ self.check_resops({'int_add' : 3, 'int_gt' : 1,
+ 'guard_false' : 1, 'jump' : 1})
def test_automatic_promotion(self):
myjitdriver = JitDriver(greens = ['i'],
@@ -686,7 +694,7 @@
self.check_loop_count(1)
# These loops do different numbers of ops based on which optimizer we
# are testing with.
- self.check_loops(self.automatic_promotion_result)
+ self.check_resops(self.automatic_promotion_result)
def test_can_enter_jit_outside_main_loop(self):
myjitdriver = JitDriver(greens=[], reds=['i', 'j', 'a'])
diff --git a/pypy/jit/metainterp/test/test_loop_unroll.py b/pypy/jit/metainterp/test/test_loop_unroll.py
--- a/pypy/jit/metainterp/test/test_loop_unroll.py
+++ b/pypy/jit/metainterp/test/test_loop_unroll.py
@@ -8,7 +8,8 @@
enable_opts = ALL_OPTS_NAMES
automatic_promotion_result = {
- 'int_add' : 3, 'int_gt' : 1, 'guard_false' : 1, 'jump' : 1,
+ 'int_gt': 2, 'guard_false': 2, 'jump': 2, 'int_add': 6,
+ 'guard_value': 1
}
# ====> test_loop.py
diff --git a/pypy/jit/metainterp/test/test_recursive.py b/pypy/jit/metainterp/test/test_recursive.py
--- a/pypy/jit/metainterp/test/test_recursive.py
+++ b/pypy/jit/metainterp/test/test_recursive.py
@@ -143,11 +143,11 @@
f = self.get_interpreter(codes)
assert self.meta_interp(f, [0, 0, 0], enable_opts='') == 42
- self.check_loops(int_add = 1, call_may_force = 1, call = 0)
+ self.check_resops(call_may_force=1, int_add=1, call=0)
assert self.meta_interp(f, [0, 0, 0], enable_opts='',
inline=True) == 42
- self.check_loops(int_add = 2, call_may_force = 0, call = 0,
- guard_no_exception = 0)
+ self.check_resops(call=0, int_add=2, call_may_force=0,
+ guard_no_exception=0)
def test_inline_jitdriver_check(self):
code = "021"
@@ -160,7 +160,7 @@
inline=True) == 42
# the call is fully inlined, because we jump to subcode[1], thus
# skipping completely the JUMP_BACK in subcode[0]
- self.check_loops(call_may_force = 0, call_assembler = 0, call = 0)
+ self.check_resops(call=0, call_may_force=0, call_assembler=0)
def test_guard_failure_in_inlined_function(self):
def p(pc, code):
@@ -491,10 +491,10 @@
return loop(100)
res = self.meta_interp(main, [0], enable_opts='', trace_limit=TRACE_LIMIT)
- self.check_loops(call_may_force=1, call=0)
+ self.check_resops(call=0, call_may_force=1)
res = self.meta_interp(main, [1], enable_opts='', trace_limit=TRACE_LIMIT)
- self.check_loops(call_may_force=0, call=0)
+ self.check_resops(call=0, call_may_force=0)
def test_trace_from_start(self):
def p(pc, code):
@@ -576,7 +576,7 @@
result += f('-c-----------l-', i+100)
self.meta_interp(g, [10], backendopt=True)
self.check_aborted_count(1)
- self.check_loops(call_assembler=1, call=0)
+ self.check_resops(call=0, call_assembler=2)
self.check_tree_loop_count(3)
def test_directly_call_assembler(self):
@@ -625,8 +625,7 @@
try:
compile.compile_tmp_callback = my_ctc
self.meta_interp(portal, [2, 5], inline=True)
- self.check_loops(call_assembler=2, call_may_force=0,
- everywhere=True)
+ self.check_resops(call_may_force=0, call_assembler=2)
finally:
compile.compile_tmp_callback = original_ctc
# check that we made a temporary callback
@@ -681,8 +680,7 @@
try:
compile.compile_tmp_callback = my_ctc
self.meta_interp(main, [2, 5], inline=True)
- self.check_loops(call_assembler=2, call_may_force=0,
- everywhere=True)
+ self.check_resops(call_may_force=0, call_assembler=2)
finally:
compile.compile_tmp_callback = original_ctc
# check that we made a temporary callback
@@ -1021,7 +1019,7 @@
res = self.meta_interp(portal, [2, 0], inline=True,
policy=StopAtXPolicy(residual))
assert res == portal(2, 0)
- self.check_loops(call_assembler=4, everywhere=True)
+ self.check_resops(call_assembler=4)
def test_inline_without_hitting_the_loop(self):
driver = JitDriver(greens = ['codeno'], reds = ['i'],
@@ -1045,7 +1043,7 @@
assert portal(0) == 70
res = self.meta_interp(portal, [0], inline=True)
assert res == 70
- self.check_loops(call_assembler=0)
+ self.check_resops(call_assembler=0)
def test_inline_with_hitting_the_loop_sometimes(self):
driver = JitDriver(greens = ['codeno'], reds = ['i', 'k'],
@@ -1071,7 +1069,7 @@
assert portal(0, 1) == 2095
res = self.meta_interp(portal, [0, 1], inline=True)
assert res == 2095
- self.check_loops(call_assembler=12, everywhere=True)
+ self.check_resops(call_assembler=12)
def test_inline_with_hitting_the_loop_sometimes_exc(self):
driver = JitDriver(greens = ['codeno'], reds = ['i', 'k'],
@@ -1109,7 +1107,7 @@
assert main(0, 1) == 2095
res = self.meta_interp(main, [0, 1], inline=True)
assert res == 2095
- self.check_loops(call_assembler=12, everywhere=True)
+ self.check_resops(call_assembler=12)
def test_handle_jitexception_in_portal(self):
# a test for _handle_jitexception_in_portal in blackhole.py
@@ -1238,7 +1236,7 @@
i += 1
self.meta_interp(portal, [0, 0, 0], inline=True)
- self.check_loops(call=0, call_may_force=0)
+ self.check_resops(call_may_force=0, call=0)
class TestLLtype(RecursiveTests, LLJitMixin):
pass
diff --git a/pypy/jit/metainterp/test/test_send.py b/pypy/jit/metainterp/test/test_send.py
--- a/pypy/jit/metainterp/test/test_send.py
+++ b/pypy/jit/metainterp/test/test_send.py
@@ -20,9 +20,8 @@
return c
res = self.meta_interp(f, [1])
assert res == 2
- self.check_loops({'jump': 1,
- 'int_sub': 1, 'int_gt' : 1,
- 'guard_true': 1}) # all folded away
+ self.check_resops({'jump': 2, 'guard_true': 2, 'int_gt': 2,
+ 'int_sub': 2}) # all folded away
def test_red_builtin_send(self):
myjitdriver = JitDriver(greens = [], reds = ['i', 'counter'])
@@ -41,12 +40,9 @@
return res
res = self.meta_interp(f, [1], policy=StopAtXPolicy(externfn))
assert res == 2
- if self.type_system == 'ootype':
- self.check_loops(call=1, oosend=1) # 'len' remains
- else:
- # 'len' becomes a getfield('num_items') for now in lltype,
- # which is itself encoded as a 'getfield_gc'
- self.check_loops(call=1, getfield_gc=1)
+ # 'len' becomes a getfield('num_items') for now in lltype,
+ # which is itself encoded as a 'getfield_gc'
+ self.check_resops(call=2, getfield_gc=2)
def test_send_to_single_target_method(self):
myjitdriver = JitDriver(greens = [], reds = ['i', 'counter'])
@@ -70,11 +66,10 @@
res = self.meta_interp(f, [1], policy=StopAtXPolicy(externfn),
backendopt=True)
assert res == 43
- self.check_loops({'call': 1, 'guard_no_exception': 1,
- 'getfield_gc': 1,
- 'int_add': 1,
- 'jump': 1, 'int_gt' : 1, 'guard_true' : 1,
- 'int_sub' : 1})
+ self.check_resops({'int_gt': 2, 'getfield_gc': 2,
+ 'guard_true': 2, 'int_sub': 2, 'jump': 2,
+ 'call': 2, 'guard_no_exception': 2,
+ 'int_add': 2})
def test_red_send_to_green_receiver(self):
myjitdriver = JitDriver(greens = ['i'], reds = ['counter', 'j'])
@@ -97,7 +92,7 @@
return res
res = self.meta_interp(f, [4, -1])
assert res == 145
- self.check_loops(int_add = 1, everywhere=True)
+ self.check_resops(int_add=1)
def test_oosend_base(self):
myjitdriver = JitDriver(greens = [], reds = ['x', 'y', 'w'])
@@ -132,7 +127,7 @@
assert res == 17
res = self.meta_interp(f, [4, 14])
assert res == 1404
- self.check_loops(guard_class=0, new_with_vtable=0, new=0)
+ self.check_resops(guard_class=1, new=0, new_with_vtable=0)
def test_three_receivers(self):
myjitdriver = JitDriver(greens = [], reds = ['y'])
@@ -205,8 +200,7 @@
# of the body in a single bigger loop with no failing guard except
# the final one.
self.check_loop_count(1)
- self.check_loops(guard_class=0,
- int_add=2, int_sub=2)
+ self.check_resops(guard_class=1, int_add=4, int_sub=4)
self.check_jumps(14)
def test_oosend_guard_failure_2(self):
@@ -247,8 +241,7 @@
res = self.meta_interp(f, [4, 28])
assert res == f(4, 28)
self.check_loop_count(1)
- self.check_loops(guard_class=0,
- int_add=2, int_sub=2)
+ self.check_resops(guard_class=1, int_add=4, int_sub=4)
self.check_jumps(14)
def test_oosend_different_initial_class(self):
@@ -285,8 +278,8 @@
# However, this doesn't match the initial value of 'w'.
# XXX This not completely easy to check...
self.check_loop_count(1)
- self.check_loops(int_add=0, int_lshift=1, guard_class=0,
- new_with_vtable=0, new=0)
+ self.check_resops(guard_class=1, new_with_vtable=0, int_lshift=2,
+ int_add=0, new=0)
def test_indirect_call_unknown_object_1(self):
myjitdriver = JitDriver(greens = [], reds = ['x', 'y'])
@@ -566,10 +559,7 @@
policy = StopAtXPolicy(new, A.foo.im_func, B.foo.im_func)
res = self.meta_interp(fn, [0, 20], policy=policy)
assert res == 42
- if self.type_system == 'ootype':
- self.check_loops(oosend=1)
- else:
- self.check_loops(call=1)
+ self.check_resops(call=2)
def test_residual_oosend_with_void(self):
@@ -597,10 +587,7 @@
policy = StopAtXPolicy(new, A.foo.im_func)
res = self.meta_interp(fn, [1, 20], policy=policy)
assert res == 41
- if self.type_system == 'ootype':
- self.check_loops(oosend=1)
- else:
- self.check_loops(call=1)
+ self.check_resops(call=2)
def test_constfold_pure_oosend(self):
myjitdriver = JitDriver(greens=[], reds = ['i', 'obj'])
@@ -621,10 +608,7 @@
policy = StopAtXPolicy(A.foo.im_func)
res = self.meta_interp(fn, [1, 20], policy=policy)
assert res == 42
- if self.type_system == 'ootype':
- self.check_loops(oosend=0)
- else:
- self.check_loops(call=0)
+ self.check_resops(call=0)
def test_generalize_loop(self):
myjitdriver = JitDriver(greens=[], reds = ['i', 'obj'])
diff --git a/pypy/jit/metainterp/test/test_virtual.py b/pypy/jit/metainterp/test/test_virtual.py
--- a/pypy/jit/metainterp/test/test_virtual.py
+++ b/pypy/jit/metainterp/test/test_virtual.py
@@ -31,8 +31,9 @@
res = self.meta_interp(f, [10])
assert res == 55 * 10
self.check_loop_count(1)
- self.check_loops(new=0, new_with_vtable=0,
- getfield_gc=0, setfield_gc=0)
+ self.check_resops(new_with_vtable=0, setfield_gc=0,
+ getfield_gc=2, new=0)
+
def test_virtualized2(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'node1', 'node2'])
@@ -53,8 +54,8 @@
n -= 1
return node1.value * node2.value
assert f(10) == self.meta_interp(f, [10])
- self.check_loops(new=0, new_with_vtable=0,
- getfield_gc=0, setfield_gc=0)
+ self.check_resops(new_with_vtable=0, setfield_gc=0, getfield_gc=2,
+ new=0)
def test_virtualized_circular1(self):
class MyNode():
@@ -79,8 +80,8 @@
res = self.meta_interp(f, [10])
assert res == 55 * 10
self.check_loop_count(1)
- self.check_loops(new=0, new_with_vtable=0,
- getfield_gc=0, setfield_gc=0)
+ self.check_resops(new_with_vtable=0, setfield_gc=0,
+ getfield_gc=3, new=0)
def test_virtualized_float(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'node'])
@@ -97,7 +98,7 @@
res = self.meta_interp(f, [10])
assert res == f(10)
self.check_loop_count(1)
- self.check_loops(new=0, float_add=0)
+ self.check_resops(new=0, float_add=1)
def test_virtualized_float2(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'node'])
@@ -115,7 +116,8 @@
res = self.meta_interp(f, [10])
assert res == f(10)
self.check_loop_count(1)
- self.check_loops(new=0, float_add=1)
+ self.check_resops(new=0, float_add=2)
+
def test_virtualized_2(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'node'])
@@ -139,8 +141,8 @@
res = self.meta_interp(f, [10])
assert res == 55 * 30
self.check_loop_count(1)
- self.check_loops(new=0, new_with_vtable=0,
- getfield_gc=0, setfield_gc=0)
+ self.check_resops(new_with_vtable=0, setfield_gc=0, getfield_gc=2,
+ new=0)
def test_nonvirtual_obj_delays_loop(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'node'])
@@ -160,8 +162,8 @@
res = self.meta_interp(f, [500])
assert res == 640
self.check_loop_count(1)
- self.check_loops(new=0, new_with_vtable=0,
- getfield_gc=0, setfield_gc=0)
+ self.check_resops(new_with_vtable=0, setfield_gc=0,
+ getfield_gc=1, new=0)
def test_two_loops_with_virtual(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'node'])
@@ -184,8 +186,9 @@
res = self.meta_interp(f, [18])
assert res == f(18)
self.check_loop_count(2)
- self.check_loops(new=0, new_with_vtable=0,
- getfield_gc=0, setfield_gc=0)
+ self.check_resops(new_with_vtable=0, setfield_gc=0,
+ getfield_gc=2, new=0)
+
def test_two_loops_with_escaping_virtual(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'node'])
@@ -212,8 +215,8 @@
res = self.meta_interp(f, [20], policy=StopAtXPolicy(externfn))
assert res == f(20)
self.check_loop_count(3)
- self.check_loops(**{self._new_op: 1})
- self.check_loops(int_mul=0, call=1)
+ self.check_resops(**{self._new_op: 1})
+ self.check_resops(int_mul=0, call=1)
def test_two_virtuals(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'prev'])
@@ -236,7 +239,7 @@
res = self.meta_interp(f, [12])
assert res == 78
- self.check_loops(new_with_vtable=0, new=0)
+ self.check_resops(new_with_vtable=0, new=0)
def test_specialied_bridge(self):
myjitdriver = JitDriver(greens = [], reds = ['y', 'x', 'res'])
@@ -281,7 +284,7 @@
res = self.meta_interp(f, [20])
assert res == 9
- self.check_loops(new_with_vtable=0, new=0)
+ self.check_resops(new_with_vtable=0, new=0)
def test_immutable_constant_getfield(self):
myjitdriver = JitDriver(greens = ['stufflist'], reds = ['n', 'i'])
@@ -307,7 +310,7 @@
res = self.meta_interp(f, [10, 1, 0], listops=True)
assert res == 0
- self.check_loops(getfield_gc=0)
+ self.check_resops(getfield_gc=0)
def test_escapes(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'parent'])
@@ -336,7 +339,7 @@
res = self.meta_interp(f, [10], policy=StopAtXPolicy(g))
assert res == 3
- self.check_loops(**{self._new_op: 1})
+ self.check_resops(**{self._new_op: 1})
def test_virtual_on_virtual(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'parent'])
@@ -366,7 +369,7 @@
res = self.meta_interp(f, [10])
assert res == 2
- self.check_loops(new=0, new_with_vtable=0)
+ self.check_resops(new=0, new_with_vtable=0)
def test_bridge_from_interpreter(self):
mydriver = JitDriver(reds = ['n', 'f'], greens = [])
@@ -841,7 +844,7 @@
del t2
return i
assert self.meta_interp(f, []) == 10
- self.check_loops(new_array=0)
+ self.check_resops(new_array=0)
def test_virtual_streq_bug(self):
mydriver = JitDriver(reds = ['i', 's', 'a'], greens = [])
@@ -942,8 +945,8 @@
res = self.meta_interp(f, [16])
assert res == f(16)
- self.check_loops(getfield_gc=2)
-
+ self.check_resops(getfield_gc=7)
+
# ____________________________________________________________
# Run 1: all the tests instantiate a real RPython class
@@ -985,10 +988,8 @@
res = self.meta_interp(f, [10])
assert res == 20
self.check_loop_count(1)
- self.check_loops(new=0, new_with_vtable=0,
- getfield_gc=0, setfield_gc=0)
-
-
+ self.check_resops(new_with_vtable=0, setfield_gc=0, getfield_gc=0,
+ new=0)
class TestOOtype_Instance(VirtualTests, OOJitMixin):
_new_op = 'new_with_vtable'
More information about the pypy-commit
mailing list