Author: Hakan Ardo <ha...@debian.org> Branch: jit-targets Changeset: r48906:e008b8114029 Date: 2011-11-08 08:07 +0100 http://bitbucket.org/pypy/pypy/changeset/e008b8114029/
Log: hg merge jit-refactor-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' _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit