Author: Hakan Ardo <ha...@debian.org> Branch: jit-targets Changeset: r49049:83bf8f708ffa Date: 2011-11-08 18:02 +0100 http://bitbucket.org/pypy/pypy/changeset/83bf8f708ffa/
Log: hg merge jit-refactor-tests diff --git a/pypy/jit/metainterp/test/test_del.py b/pypy/jit/metainterp/test/test_del.py --- a/pypy/jit/metainterp/test/test_del.py +++ b/pypy/jit/metainterp/test/test_del.py @@ -20,12 +20,12 @@ n -= 1 return 42 self.meta_interp(f, [20]) - self.check_loops({'call': 2, # calls to a helper function - 'guard_no_exception': 2, # follows the calls - 'int_sub': 1, - 'int_gt': 1, - 'guard_true': 1, - 'jump': 1}) + self.check_resops({'call': 4, # calls to a helper function + 'guard_no_exception': 4, # follows the calls + 'int_sub': 2, + 'int_gt': 2, + 'guard_true': 2, + 'jump': 2}) def test_class_of_allocated(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'x']) @@ -78,7 +78,7 @@ return 1 res = self.meta_interp(f, [20], enable_opts='') assert res == 1 - self.check_loops(call=1) # for the case B(), but not for the case A() + self.check_resops(call=1) # for the case B(), but not for the case A() class TestLLtype(DelTests, LLJitMixin): @@ -103,7 +103,7 @@ break return 42 self.meta_interp(f, [20]) - self.check_loops(getfield_raw=1, setfield_raw=1, call=0, call_pure=0) + self.check_resops(call_pure=0, setfield_raw=2, call=0, getfield_raw=2) class TestOOtype(DelTests, OOJitMixin): def setup_class(cls): diff --git a/pypy/jit/metainterp/test/test_dict.py b/pypy/jit/metainterp/test/test_dict.py --- a/pypy/jit/metainterp/test/test_dict.py +++ b/pypy/jit/metainterp/test/test_dict.py @@ -91,7 +91,7 @@ res1 = f(100) res2 = self.meta_interp(f, [100], listops=True) assert res1 == res2 - self.check_loops(int_mod=1) # the hash was traced and eq, but cached + self.check_resops(int_mod=2) # the hash was traced and eq, but cached def test_dict_setdefault(self): myjitdriver = JitDriver(greens = [], reds = ['total', 'dct']) @@ -107,7 +107,7 @@ assert f(100) == 50 res = self.meta_interp(f, [100], listops=True) assert res == 50 - self.check_loops(new=0, new_with_vtable=0) + self.check_resops(new=0, new_with_vtable=0) def test_dict_as_counter(self): myjitdriver = JitDriver(greens = [], reds = ['total', 'dct']) @@ -128,7 +128,7 @@ assert f(100) == 50 res = self.meta_interp(f, [100], listops=True) assert res == 50 - self.check_loops(int_mod=1) # key + eq, but cached + self.check_resops(int_mod=2) # key + eq, but cached def test_repeated_lookup(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'd']) @@ -153,12 +153,13 @@ res = self.meta_interp(f, [100], listops=True) assert res == f(50) - self.check_loops({"call": 5, "getfield_gc": 1, "getinteriorfield_gc": 1, - "guard_false": 1, "guard_no_exception": 4, - "guard_true": 1, "int_and": 1, "int_gt": 1, - "int_is_true": 1, "int_sub": 1, "jump": 1, - "new_with_vtable": 1, "new": 1, "new_array": 1, - "setfield_gc": 3, }) + self.check_resops({'new_array': 2, 'getfield_gc': 2, + 'guard_true': 2, 'jump': 2, + 'new_with_vtable': 2, 'getinteriorfield_gc': 2, + 'setfield_gc': 6, 'int_gt': 2, 'int_sub': 2, + 'call': 10, 'int_and': 2, + 'guard_no_exception': 8, 'new': 2, + 'guard_false': 2, 'int_is_true': 2}) class TestOOtype(DictTests, OOJitMixin): diff --git a/pypy/jit/metainterp/test/test_fficall.py b/pypy/jit/metainterp/test/test_fficall.py --- a/pypy/jit/metainterp/test/test_fficall.py +++ b/pypy/jit/metainterp/test/test_fficall.py @@ -68,23 +68,23 @@ 'byval': False} supported = all(d[check] for check in jitif) if supported: - self.check_loops( - call_release_gil=1, # a CALL_RELEASE_GIL, and no other CALLs + self.check_resops( + call_release_gil=2, # a CALL_RELEASE_GIL, and no other CALLs call=0, call_may_force=0, - guard_no_exception=1, - guard_not_forced=1, - int_add=1, - int_lt=1, - guard_true=1, - jump=1) + guard_no_exception=2, + guard_not_forced=2, + int_add=2, + int_lt=2, + guard_true=2, + jump=2) else: - self.check_loops( + self.check_resops( call_release_gil=0, # no CALL_RELEASE_GIL - int_add=1, - int_lt=1, - guard_true=1, - jump=1) + int_add=2, + int_lt=2, + guard_true=2, + jump=2) return res def test_byval_result(self): diff --git a/pypy/jit/metainterp/test/test_greenfield.py b/pypy/jit/metainterp/test/test_greenfield.py --- a/pypy/jit/metainterp/test/test_greenfield.py +++ b/pypy/jit/metainterp/test/test_greenfield.py @@ -25,7 +25,7 @@ res = self.meta_interp(g, [7]) assert res == -2 self.check_loop_count(2) - self.check_loops(guard_value=0) + self.check_resops(guard_value=0) def test_green_field_2(self): myjitdriver = JitDriver(greens=['ctx.x'], reds=['ctx']) @@ -50,7 +50,7 @@ res = self.meta_interp(g, [7]) assert res == -22 self.check_loop_count(6) - self.check_loops(guard_value=0) + self.check_resops(guard_value=0) class TestLLtypeGreenFieldsTests(GreenFieldsTests, LLJitMixin): diff --git a/pypy/jit/metainterp/test/test_jitdriver.py b/pypy/jit/metainterp/test/test_jitdriver.py --- a/pypy/jit/metainterp/test/test_jitdriver.py +++ b/pypy/jit/metainterp/test/test_jitdriver.py @@ -88,7 +88,7 @@ assert res == loop2(4, 40) # we expect only one int_sub, corresponding to the single # compiled instance of loop1() - self.check_loops(int_sub=1) + self.check_resops(int_sub=2) # the following numbers are not really expectations of the test # itself, but just the numbers that we got after looking carefully # at the generated machine code @@ -154,7 +154,7 @@ res = self.meta_interp(loop2, [4, 40], repeat=7, inline=True) assert res == loop2(4, 40) # we expect no int_sub, but a residual call - self.check_loops(int_sub=0, call=1) + self.check_resops(call=2, int_sub=0) def test_multiple_jits_trace_too_long(self): myjitdriver1 = JitDriver(greens=["n"], reds=["i", "box"]) diff --git a/pypy/jit/metainterp/test/test_list.py b/pypy/jit/metainterp/test/test_list.py --- a/pypy/jit/metainterp/test/test_list.py +++ b/pypy/jit/metainterp/test/test_list.py @@ -6,8 +6,8 @@ class ListTests: def check_all_virtualized(self): - self.check_loops(new_array=0, setarrayitem_gc=0, getarrayitem_gc=0, - arraylen_gc=0) + self.check_resops(setarrayitem_gc=0, new_array=0, arraylen_gc=0, + getarrayitem_gc=0) def test_simple_array(self): jitdriver = JitDriver(greens = [], reds = ['n']) @@ -20,7 +20,7 @@ return n res = self.meta_interp(f, [10], listops=True) assert res == 0 - self.check_loops(int_sub=1) + self.check_resops(int_sub=2) self.check_all_virtualized() def test_list_pass_around(self): @@ -56,7 +56,8 @@ res = self.meta_interp(f, [10], listops=True) assert res == f(10) # one setitem should be gone by now - self.check_loops(call=1, setarrayitem_gc=2, getarrayitem_gc=1) + self.check_resops(setarrayitem_gc=4, getarrayitem_gc=2, call=2) + def test_ll_fixed_setitem_fast(self): jitdriver = JitDriver(greens = [], reds = ['n', 'l']) @@ -93,7 +94,7 @@ res = self.meta_interp(f, [10], listops=True) assert res == f(10) - self.check_loops(setarrayitem_gc=0, getarrayitem_gc=0, call=0) + self.check_resops(setarrayitem_gc=0, call=0, getarrayitem_gc=0) def test_vlist_alloc_and_set(self): # the check_loops fails, because [non-null] * n is not supported yet @@ -141,7 +142,7 @@ res = self.meta_interp(f, [5], listops=True) assert res == 7 - self.check_loops(call=0) + self.check_resops(call=0) def test_fold_getitem_1(self): jitdriver = JitDriver(greens = ['pc', 'n', 'l'], reds = ['total']) @@ -161,7 +162,7 @@ res = self.meta_interp(f, [4], listops=True) assert res == f(4) - self.check_loops(call=0) + self.check_resops(call=0) def test_fold_getitem_2(self): jitdriver = JitDriver(greens = ['pc', 'n', 'l'], reds = ['total', 'x']) @@ -186,7 +187,7 @@ res = self.meta_interp(f, [4], listops=True) assert res == f(4) - self.check_loops(call=0, getfield_gc=0) + self.check_resops(call=0, getfield_gc=0) def test_fold_indexerror(self): jitdriver = JitDriver(greens = [], reds = ['total', 'n', 'lst']) @@ -206,7 +207,7 @@ res = self.meta_interp(f, [15], listops=True) assert res == f(15) - self.check_loops(guard_exception=0) + self.check_resops(guard_exception=0) def test_virtual_resize(self): jitdriver = JitDriver(greens = [], reds = ['n', 's']) @@ -224,9 +225,8 @@ return s res = self.meta_interp(f, [15], listops=True) assert res == f(15) - self.check_loops({"int_add": 1, "int_sub": 1, "int_gt": 1, - "guard_true": 1, "jump": 1}) - + self.check_resops({'jump': 2, 'int_gt': 2, 'int_add': 2, + 'guard_true': 2, 'int_sub': 2}) class TestOOtype(ListTests, OOJitMixin): pass @@ -258,4 +258,4 @@ assert res == f(37) # There is the one actual field on a, plus several fields on the list # itself - self.check_loops(getfield_gc=10, everywhere=True) + self.check_resops(getfield_gc=10) diff --git a/pypy/jit/metainterp/test/test_quasiimmut.py b/pypy/jit/metainterp/test/test_quasiimmut.py --- a/pypy/jit/metainterp/test/test_quasiimmut.py +++ b/pypy/jit/metainterp/test/test_quasiimmut.py @@ -73,8 +73,7 @@ # res = self.meta_interp(f, [100, 7]) assert res == 700 - self.check_loops(guard_not_invalidated=2, getfield_gc=0, - everywhere=True) + self.check_resops(guard_not_invalidated=2, getfield_gc=0) # from pypy.jit.metainterp.warmspot import get_stats loops = get_stats().loops @@ -103,7 +102,7 @@ assert f(100, 7) == 721 res = self.meta_interp(f, [100, 7]) assert res == 721 - self.check_loops(guard_not_invalidated=0, getfield_gc=1) + self.check_resops(guard_not_invalidated=0, getfield_gc=3) # from pypy.jit.metainterp.warmspot import get_stats loops = get_stats().loops @@ -134,8 +133,7 @@ # res = self.meta_interp(f, [100, 7]) assert res == 700 - self.check_loops(guard_not_invalidated=2, getfield_gc=0, - everywhere=True) + self.check_resops(guard_not_invalidated=2, getfield_gc=0) def test_change_during_tracing_1(self): myjitdriver = JitDriver(greens=['foo'], reds=['x', 'total']) @@ -160,7 +158,7 @@ assert f(100, 7) == 721 res = self.meta_interp(f, [100, 7]) assert res == 721 - self.check_loops(guard_not_invalidated=0, getfield_gc=1) + self.check_resops(guard_not_invalidated=0, getfield_gc=2) def test_change_during_tracing_2(self): myjitdriver = JitDriver(greens=['foo'], reds=['x', 'total']) @@ -186,7 +184,7 @@ assert f(100, 7) == 700 res = self.meta_interp(f, [100, 7]) assert res == 700 - self.check_loops(guard_not_invalidated=0, getfield_gc=1) + self.check_resops(guard_not_invalidated=0, getfield_gc=2) def test_change_invalidate_reentering(self): myjitdriver = JitDriver(greens=['foo'], reds=['x', 'total']) @@ -212,7 +210,7 @@ assert g(100, 7) == 700707 res = self.meta_interp(g, [100, 7]) assert res == 700707 - self.check_loops(guard_not_invalidated=2, getfield_gc=0) + self.check_resops(guard_not_invalidated=4, getfield_gc=0) def test_invalidate_while_running(self): jitdriver = JitDriver(greens=['foo'], reds=['i', 'total']) @@ -324,8 +322,8 @@ assert f(100, 15) == 3009 res = self.meta_interp(f, [100, 15]) assert res == 3009 - self.check_loops(guard_not_invalidated=4, getfield_gc=0, - call_may_force=0, guard_not_forced=0) + self.check_resops(guard_not_invalidated=8, guard_not_forced=0, + call_may_force=0, getfield_gc=0) def test_list_simple_1(self): myjitdriver = JitDriver(greens=['foo'], reds=['x', 'total']) @@ -347,9 +345,8 @@ # res = self.meta_interp(f, [100, 7]) assert res == 700 - self.check_loops(guard_not_invalidated=2, getfield_gc=0, - getarrayitem_gc=0, getarrayitem_gc_pure=0, - everywhere=True) + self.check_resops(getarrayitem_gc_pure=0, guard_not_invalidated=2, + getarrayitem_gc=0, getfield_gc=0) # from pypy.jit.metainterp.warmspot import get_stats loops = get_stats().loops @@ -385,9 +382,8 @@ # res = self.meta_interp(f, [100, 7]) assert res == 714 - self.check_loops(guard_not_invalidated=2, getfield_gc=0, - getarrayitem_gc=0, getarrayitem_gc_pure=0, - arraylen_gc=0, everywhere=True) + self.check_resops(getarrayitem_gc_pure=0, guard_not_invalidated=2, + arraylen_gc=0, getarrayitem_gc=0, getfield_gc=0) # from pypy.jit.metainterp.warmspot import get_stats loops = get_stats().loops @@ -421,9 +417,8 @@ # res = self.meta_interp(f, [100, 7]) assert res == 700 - self.check_loops(guard_not_invalidated=2, getfield_gc=0, - getarrayitem_gc=0, getarrayitem_gc_pure=0, - everywhere=True) + self.check_resops(guard_not_invalidated=2, getfield_gc=0, + getarrayitem_gc=0, getarrayitem_gc_pure=0) # from pypy.jit.metainterp.warmspot import get_stats loops = get_stats().loops @@ -460,9 +455,9 @@ assert f(100, 15) == 3009 res = self.meta_interp(f, [100, 15]) assert res == 3009 - self.check_loops(guard_not_invalidated=4, getfield_gc=0, - getarrayitem_gc=0, getarrayitem_gc_pure=0, - call_may_force=0, guard_not_forced=0) + self.check_resops(call_may_force=0, getfield_gc=0, + getarrayitem_gc_pure=0, guard_not_forced=0, + getarrayitem_gc=0, guard_not_invalidated=8) def test_invalidated_loop_is_not_used_any_more_as_target(self): myjitdriver = JitDriver(greens=['foo'], reds=['x']) diff --git a/pypy/jit/metainterp/test/test_slist.py b/pypy/jit/metainterp/test/test_slist.py --- a/pypy/jit/metainterp/test/test_slist.py +++ b/pypy/jit/metainterp/test/test_slist.py @@ -76,7 +76,7 @@ return lst[i] res = self.meta_interp(f, [21], listops=True) assert res == f(21) - self.check_loops(call=0) + self.check_resops(call=0) def test_getitem_neg(self): myjitdriver = JitDriver(greens = [], reds = ['i', 'n']) @@ -92,7 +92,7 @@ return x res = self.meta_interp(f, [-2], listops=True) assert res == 41 - self.check_loops(call=0, guard_value=0) + self.check_resops(call=0, guard_value=0) # we don't support resizable lists on ootype #class TestOOtype(ListTests, OOJitMixin): diff --git a/pypy/jit/metainterp/test/test_string.py b/pypy/jit/metainterp/test/test_string.py --- a/pypy/jit/metainterp/test/test_string.py +++ b/pypy/jit/metainterp/test/test_string.py @@ -30,7 +30,7 @@ return i res = self.meta_interp(f, [10, True, _str('h')], listops=True) assert res == 5 - self.check_loops(**{self.CALL: 1, self.CALL_PURE: 0, 'everywhere': True}) + self.check_resops(**{self.CALL: 1, self.CALL_PURE: 0}) def test_eq_folded(self): _str = self._str @@ -50,7 +50,7 @@ return i res = self.meta_interp(f, [10, True, _str('h')], listops=True) assert res == 5 - self.check_loops(**{self.CALL: 0, self.CALL_PURE: 0}) + self.check_resops(**{self.CALL: 0, self.CALL_PURE: 0}) def test_newstr(self): _str, _chr = self._str, self._chr @@ -85,7 +85,7 @@ n -= 1 return 42 self.meta_interp(f, [6]) - self.check_loops(newstr=0, strsetitem=0, strlen=0, + self.check_resops(newstr=0, strsetitem=0, strlen=0, newunicode=0, unicodesetitem=0, unicodelen=0) def test_char2string_escape(self): @@ -126,7 +126,7 @@ return total res = self.meta_interp(f, [6]) assert res == 21 - self.check_loops(newstr=0, strgetitem=0, strsetitem=0, strlen=0, + self.check_resops(newstr=0, strgetitem=0, strsetitem=0, strlen=0, newunicode=0, unicodegetitem=0, unicodesetitem=0, unicodelen=0) @@ -147,7 +147,7 @@ m -= 1 return 42 self.meta_interp(f, [6, 7]) - self.check_loops(newstr=0, strsetitem=0, + self.check_resops(newstr=0, strsetitem=0, newunicode=0, unicodesetitem=0, call=0, call_pure=0) @@ -168,12 +168,11 @@ return 42 self.meta_interp(f, [6, 7]) if _str is str: - self.check_loops(newstr=1, strsetitem=0, copystrcontent=2, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, copystrcontent=4, + strsetitem=0, call=2, newstr=2) else: - self.check_loops(newunicode=1, unicodesetitem=0, - copyunicodecontent=2, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, unicodesetitem=0, call=2, + copyunicodecontent=4, newunicode=2) def test_strconcat_escape_str_char(self): _str, _chr = self._str, self._chr @@ -192,12 +191,11 @@ return 42 self.meta_interp(f, [6, 7]) if _str is str: - self.check_loops(newstr=1, strsetitem=1, copystrcontent=1, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, copystrcontent=2, strsetitem=2, + call=2, newstr=2) else: - self.check_loops(newunicode=1, unicodesetitem=1, - copyunicodecontent=1, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, unicodesetitem=2, call=2, + copyunicodecontent=2, newunicode=2) def test_strconcat_escape_char_str(self): _str, _chr = self._str, self._chr @@ -216,12 +214,11 @@ return 42 self.meta_interp(f, [6, 7]) if _str is str: - self.check_loops(newstr=1, strsetitem=1, copystrcontent=1, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, copystrcontent=2, + strsetitem=2, call=2, newstr=2) else: - self.check_loops(newunicode=1, unicodesetitem=1, - copyunicodecontent=1, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, unicodesetitem=2, call=2, + copyunicodecontent=2, newunicode=2) def test_strconcat_escape_char_char(self): _str, _chr = self._str, self._chr @@ -239,12 +236,11 @@ return 42 self.meta_interp(f, [6, 7]) if _str is str: - self.check_loops(newstr=1, strsetitem=2, copystrcontent=0, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, copystrcontent=0, + strsetitem=4, call=2, newstr=2) else: - self.check_loops(newunicode=1, unicodesetitem=2, - copyunicodecontent=0, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, unicodesetitem=4, call=2, + copyunicodecontent=0, newunicode=2) def test_strconcat_escape_str_char_str(self): _str, _chr = self._str, self._chr @@ -263,12 +259,11 @@ return 42 self.meta_interp(f, [6, 7]) if _str is str: - self.check_loops(newstr=1, strsetitem=1, copystrcontent=2, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, copystrcontent=4, strsetitem=2, + call=2, newstr=2) else: - self.check_loops(newunicode=1, unicodesetitem=1, - copyunicodecontent=2, - call=1, call_pure=0) # escape + self.check_resops(call_pure=0, unicodesetitem=2, call=2, + copyunicodecontent=4, newunicode=2) def test_strconcat_guard_fail(self): _str = self._str @@ -325,7 +320,7 @@ m -= 1 return 42 self.meta_interp(f, [6, 7]) - self.check_loops(newstr=0, newunicode=0) + self.check_resops(newunicode=0, newstr=0) def test_str_slice_len_surviving(self): _str = self._str @@ -504,9 +499,9 @@ sys.defaultencoding = _str('utf-8') return sa assert self.meta_interp(f, [8]) == f(8) - self.check_loops({'int_add': 1, 'guard_true': 1, 'int_sub': 1, - 'jump': 1, 'int_is_true': 1, - 'guard_not_invalidated': 1}) + self.check_resops({'jump': 2, 'int_is_true': 2, 'int_add': 2, + 'guard_true': 2, 'guard_not_invalidated': 2, + 'int_sub': 2}) def test_promote_string(self): driver = JitDriver(greens = [], reds = ['n']) @@ -519,7 +514,7 @@ return 0 self.meta_interp(f, [0]) - self.check_loops(call=3 + 1) # one for int2str + self.check_resops(call=7) #class TestOOtype(StringTests, OOJitMixin): # CALL = "oosend" @@ -552,9 +547,8 @@ m -= 1 return 42 self.meta_interp(f, [6, 7]) - self.check_loops(call=1, # escape() - newunicode=1, unicodegetitem=0, - unicodesetitem=1, copyunicodecontent=1) + self.check_resops(unicodesetitem=2, newunicode=2, call=4, + copyunicodecontent=2, unicodegetitem=0) def test_str2unicode_fold(self): _str = self._str @@ -572,9 +566,9 @@ m -= 1 return 42 self.meta_interp(f, [6, 7]) - self.check_loops(call_pure=0, call=1, - newunicode=0, unicodegetitem=0, - unicodesetitem=0, copyunicodecontent=0) + self.check_resops(call_pure=0, unicodesetitem=0, call=2, + newunicode=0, unicodegetitem=0, + copyunicodecontent=0) def test_join_chars(self): jitdriver = JitDriver(reds=['a', 'b', 'c', 'i'], greens=[]) @@ -596,9 +590,8 @@ # The "".join should be unrolled, since the length of x is known since # it is virtual, ensure there are no calls to ll_join_chars, or # allocations. - self.check_loops({ - "guard_true": 5, "int_is_true": 3, "int_lt": 2, "int_add": 2, "jump": 2, - }, everywhere=True) + self.check_resops({'jump': 2, 'guard_true': 5, 'int_lt': 2, + 'int_add': 2, 'int_is_true': 3}) def test_virtual_copystringcontent(self): jitdriver = JitDriver(reds=['n', 'result'], greens=[]) diff --git a/pypy/jit/metainterp/test/test_tl.py b/pypy/jit/metainterp/test/test_tl.py --- a/pypy/jit/metainterp/test/test_tl.py +++ b/pypy/jit/metainterp/test/test_tl.py @@ -72,16 +72,16 @@ res = self.meta_interp(main, [0, 6], listops=True, backendopt=True) assert res == 5040 - self.check_loops({'int_mul':1, 'jump':1, - 'int_sub':1, 'int_le':1, 'guard_false':1}) + self.check_resops({'jump': 2, 'int_le': 2, 'guard_value': 1, + 'int_mul': 2, 'guard_false': 2, 'int_sub': 2}) def test_tl_2(self): main = self._get_main() res = self.meta_interp(main, [1, 10], listops=True, backendopt=True) assert res == main(1, 10) - self.check_loops({'int_sub':1, 'int_le':1, - 'guard_false':1, 'jump':1}) + self.check_resops({'int_le': 2, 'int_sub': 2, 'jump': 2, + 'guard_false': 2, 'guard_value': 1}) def test_tl_call(self, listops=True, policy=None): from pypy.jit.tl.tl import interp diff --git a/pypy/jit/metainterp/test/test_virtualizable.py b/pypy/jit/metainterp/test/test_virtualizable.py --- a/pypy/jit/metainterp/test/test_virtualizable.py +++ b/pypy/jit/metainterp/test/test_virtualizable.py @@ -77,7 +77,7 @@ return xy.inst_x res = self.meta_interp(f, [20]) assert res == 30 - self.check_loops(getfield_gc=0, setfield_gc=0) + self.check_resops(setfield_gc=0, getfield_gc=0) def test_preexisting_access_2(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'xy'], @@ -102,7 +102,7 @@ assert f(5) == 185 res = self.meta_interp(f, [5]) assert res == 185 - self.check_loops(getfield_gc=0, setfield_gc=0) + self.check_resops(setfield_gc=0, getfield_gc=0) def test_two_paths_access(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'xy'], @@ -124,7 +124,7 @@ return xy.inst_x res = self.meta_interp(f, [18]) assert res == 10118 - self.check_loops(getfield_gc=0, setfield_gc=0) + self.check_resops(setfield_gc=0, getfield_gc=0) def test_synchronize_in_return(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'xy'], @@ -146,7 +146,7 @@ return xy.inst_x res = self.meta_interp(f, [18]) assert res == 10180 - self.check_loops(getfield_gc=0, setfield_gc=0) + self.check_resops(setfield_gc=0, getfield_gc=0) def test_virtualizable_and_greens(self): myjitdriver = JitDriver(greens = ['m'], reds = ['n', 'xy'], @@ -174,7 +174,7 @@ return res res = self.meta_interp(f, [40]) assert res == 50 * 4 - self.check_loops(getfield_gc=0, setfield_gc=0) + self.check_resops(setfield_gc=0, getfield_gc=0) def test_double_frame(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'xy', 'other'], @@ -197,8 +197,7 @@ return xy.inst_x res = self.meta_interp(f, [20]) assert res == 134 - self.check_loops(getfield_gc=0, setfield_gc=1) - self.check_loops(getfield_gc=1, setfield_gc=2, everywhere=True) + self.check_resops(setfield_gc=2, getfield_gc=1) # ------------------------------ @@ -248,8 +247,8 @@ return xy2.inst_l1[2] res = self.meta_interp(f, [16]) assert res == 3001 + 16 * 80 - self.check_loops(getfield_gc=0, setfield_gc=0, - getarrayitem_gc=0, setarrayitem_gc=0) + self.check_resops(setarrayitem_gc=0, setfield_gc=0, + getarrayitem_gc=0, getfield_gc=0) def test_synchronize_arrays_in_return(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'xy2'], @@ -279,8 +278,7 @@ assert f(18) == 10360 res = self.meta_interp(f, [18]) assert res == 10360 - self.check_loops(getfield_gc=0, setfield_gc=0, - getarrayitem_gc=0) + self.check_resops(setfield_gc=0, getarrayitem_gc=0, getfield_gc=0) def test_array_length(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'xy2'], @@ -306,8 +304,8 @@ return xy2.inst_l1[1] res = self.meta_interp(f, [18]) assert res == 2941309 + 18 - self.check_loops(getfield_gc=0, setfield_gc=0, - getarrayitem_gc=0, arraylen_gc=0) + self.check_resops(setfield_gc=0, getarrayitem_gc=0, + arraylen_gc=0, getfield_gc=0) def test_residual_function(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'xy2'], @@ -340,8 +338,8 @@ return xy2.inst_l1[1] res = self.meta_interp(f, [18]) assert res == 2941309 + 18 - self.check_loops(getfield_gc=0, setfield_gc=0, - getarrayitem_gc=0, arraylen_gc=1, call=1) + self.check_resops(call=2, setfield_gc=0, getarrayitem_gc=0, + arraylen_gc=2, getfield_gc=0) def test_double_frame_array(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'xy2', 'other'], @@ -377,8 +375,8 @@ expected = f(20) res = self.meta_interp(f, [20], enable_opts='') assert res == expected - self.check_loops(getfield_gc=1, setfield_gc=0, - arraylen_gc=1, getarrayitem_gc=1, setarrayitem_gc=1) + self.check_resops(setarrayitem_gc=1, setfield_gc=0, + getarrayitem_gc=1, arraylen_gc=1, getfield_gc=1) # ------------------------------ @@ -425,8 +423,7 @@ assert f(18) == 10360 res = self.meta_interp(f, [18]) assert res == 10360 - self.check_loops(getfield_gc=0, setfield_gc=0, - getarrayitem_gc=0) + self.check_resops(setfield_gc=0, getarrayitem_gc=0, getfield_gc=0) # ------------------------------ @@ -460,8 +457,7 @@ res = self.meta_interp(f, [10]) assert res == 55 - self.check_loops(getfield_gc=0, setfield_gc=0) - + self.check_resops(setfield_gc=0, getfield_gc=0) def test_virtualizable_with_array(self): myjitdriver = JitDriver(greens = [], reds = ['n', 'x', 'frame'], @@ -495,8 +491,7 @@ res = self.meta_interp(f, [10, 1], listops=True) assert res == f(10, 1) - self.check_loops(getarrayitem_gc=0) - + self.check_resops(getarrayitem_gc=0) def test_subclass_of_virtualizable(self): myjitdriver = JitDriver(greens = [], reds = ['frame'], @@ -524,8 +519,7 @@ res = self.meta_interp(f, [10]) assert res == 55 - self.check_loops(getfield_gc=0, setfield_gc=0) - + self.check_resops(setfield_gc=0, getfield_gc=0) def test_external_pass(self): jitdriver = JitDriver(greens = [], reds = ['n', 'z', 'frame'], @@ -1011,8 +1005,8 @@ res = self.meta_interp(f, [70], listops=True) assert res == intmask(42 ** 70) - self.check_loops(int_add=0, - int_sub=1) # for 'n -= 1' only + self.check_resops(int_add=0, + int_sub=2) # for 'n -= 1' only def test_simple_access_directly(self): myjitdriver = JitDriver(greens = [], reds = ['frame'], @@ -1043,7 +1037,7 @@ res = self.meta_interp(f, [10]) assert res == 55 - self.check_loops(getfield_gc=0, setfield_gc=0) + self.check_resops(setfield_gc=0, getfield_gc=0) from pypy.jit.backend.test.support import BaseCompiledMixin if isinstance(self, BaseCompiledMixin): @@ -1098,42 +1092,42 @@ res = self.meta_interp(f, [10]) assert res == 55 - self.check_loops(new_with_vtable=0) + self.check_resops(new_with_vtable=0) def test_check_for_nonstandardness_only_once(self): - myjitdriver = JitDriver(greens = [], reds = ['frame'], - virtualizables = ['frame']) + myjitdriver = JitDriver(greens = [], reds = ['frame'], + virtualizables = ['frame']) - class Frame(object): - _virtualizable2_ = ['x', 'y', 'z'] + class Frame(object): + _virtualizable2_ = ['x', 'y', 'z'] - def __init__(self, x, y, z=1): - self = hint(self, access_directly=True) - self.x = x - self.y = y - self.z = z + def __init__(self, x, y, z=1): + self = hint(self, access_directly=True) + self.x = x + self.y = y + self.z = z - class SomewhereElse: - pass - somewhere_else = SomewhereElse() + class SomewhereElse: + pass + somewhere_else = SomewhereElse() - def f(n): - frame = Frame(n, 0) - somewhere_else.top_frame = frame # escapes - frame = hint(frame, access_directly=True) - while frame.x > 0: - myjitdriver.can_enter_jit(frame=frame) - myjitdriver.jit_merge_point(frame=frame) - top_frame = somewhere_else.top_frame - child_frame = Frame(frame.x, top_frame.z, 17) - frame.y += child_frame.x - frame.x -= top_frame.z - return somewhere_else.top_frame.y - - res = self.meta_interp(f, [10]) - assert res == 55 - self.check_loops(new_with_vtable=0, ptr_eq=1, everywhere=True) - self.check_history(ptr_eq=2) + def f(n): + frame = Frame(n, 0) + somewhere_else.top_frame = frame # escapes + frame = hint(frame, access_directly=True) + while frame.x > 0: + myjitdriver.can_enter_jit(frame=frame) + myjitdriver.jit_merge_point(frame=frame) + top_frame = somewhere_else.top_frame + child_frame = Frame(frame.x, top_frame.z, 17) + frame.y += child_frame.x + frame.x -= top_frame.z + return somewhere_else.top_frame.y + + res = self.meta_interp(f, [10]) + assert res == 55 + self.check_resops(new_with_vtable=0, ptr_eq=1) + self.check_history(ptr_eq=2) def test_virtual_child_frame_with_arrays(self): myjitdriver = JitDriver(greens = [], reds = ['frame'], @@ -1165,7 +1159,7 @@ res = self.meta_interp(f, [10], listops=True) assert res == 55 - self.check_loops(new_with_vtable=0) + self.check_resops(new_with_vtable=0) def test_blackhole_should_not_pay_attention(self): myjitdriver = JitDriver(greens = [], reds = ['frame'], @@ -1203,7 +1197,7 @@ res = self.meta_interp(f, [10]) assert res == 155 - self.check_loops(getfield_gc=0, setfield_gc=0) + self.check_resops(setfield_gc=0, getfield_gc=0) def test_blackhole_should_synchronize(self): myjitdriver = JitDriver(greens = [], reds = ['frame'], @@ -1239,7 +1233,7 @@ res = self.meta_interp(f, [10]) assert res == 155 - self.check_loops(getfield_gc=0, setfield_gc=0) + self.check_resops(setfield_gc=0, getfield_gc=0) def test_blackhole_should_not_reenter(self): if not self.basic: diff --git a/pypy/jit/metainterp/test/test_virtualref.py b/pypy/jit/metainterp/test/test_virtualref.py --- a/pypy/jit/metainterp/test/test_virtualref.py +++ b/pypy/jit/metainterp/test/test_virtualref.py @@ -171,7 +171,7 @@ return 1 # self.meta_interp(f, [10]) - self.check_loops(new_with_vtable=1) # the vref + self.check_resops(new_with_vtable=2) # the vref self.check_aborted_count(0) def test_simple_all_removed(self): @@ -205,8 +205,7 @@ virtual_ref_finish(vref, xy) # self.meta_interp(f, [15]) - self.check_loops(new_with_vtable=0, # all virtualized - new_array=0) + self.check_resops(new_with_vtable=0, new_array=0) self.check_aborted_count(0) def test_simple_no_access(self): @@ -242,7 +241,7 @@ virtual_ref_finish(vref, xy) # self.meta_interp(f, [15]) - self.check_loops(new_with_vtable=1, # the vref: xy doesn't need to be forced + self.check_resops(new_with_vtable=2, # the vref: xy doesn't need to be forced new_array=0) # and neither xy.next1/2/3 self.check_aborted_count(0) @@ -280,8 +279,8 @@ exctx.topframeref = vref_None # self.meta_interp(f, [15]) - self.check_loops(new_with_vtable=2, # XY(), the vref - new_array=3) # next1/2/3 + self.check_resops(new_with_vtable=4, # XY(), the vref + new_array=6) # next1/2/3 self.check_aborted_count(0) def test_simple_force_sometimes(self): @@ -320,8 +319,8 @@ # res = self.meta_interp(f, [30]) assert res == 13 - self.check_loops(new_with_vtable=1, # the vref, but not XY() - new_array=0) # and neither next1/2/3 + self.check_resops(new_with_vtable=2, # the vref, but not XY() + new_array=0) # and neither next1/2/3 self.check_loop_count(1) self.check_aborted_count(0) @@ -362,7 +361,7 @@ # res = self.meta_interp(f, [30]) assert res == 13 - self.check_loops(new_with_vtable=0, # all virtualized in the n!=13 loop + self.check_resops(new_with_vtable=0, # all virtualized in the n!=13 loop new_array=0) self.check_loop_count(1) self.check_aborted_count(0) @@ -412,7 +411,7 @@ res = self.meta_interp(f, [72]) assert res == 6 self.check_loop_count(2) # the loop and the bridge - self.check_loops(new_with_vtable=2, # loop: nothing; bridge: vref, xy + self.check_resops(new_with_vtable=2, # loop: nothing; bridge: vref, xy new_array=2) # bridge: next4, next5 self.check_aborted_count(0) @@ -442,8 +441,8 @@ # res = self.meta_interp(f, [15]) assert res == 1 - self.check_loops(new_with_vtable=2, # vref, xy - new_array=1) # next1 + self.check_resops(new_with_vtable=4, # vref, xy + new_array=2) # next1 self.check_aborted_count(0) def test_recursive_call_1(self): @@ -543,7 +542,7 @@ # res = self.meta_interp(f, [15]) assert res == 1 - self.check_loops(new_with_vtable=2) # vref, xy + self.check_resops(new_with_vtable=4) # vref, xy def test_cannot_use_invalid_virtualref(self): myjitdriver = JitDriver(greens = [], reds = ['n']) diff --git a/pypy/jit/metainterp/test/test_warmspot.py b/pypy/jit/metainterp/test/test_warmspot.py --- a/pypy/jit/metainterp/test/test_warmspot.py +++ b/pypy/jit/metainterp/test/test_warmspot.py @@ -103,12 +103,12 @@ # check that the set_param will override the default res = self.meta_interp(f, [10, llstr('')]) assert res == 0 - self.check_loops(new_with_vtable=1) + self.check_resops(new_with_vtable=1) res = self.meta_interp(f, [10, llstr(ALL_OPTS_NAMES)], enable_opts='') assert res == 0 - self.check_loops(new_with_vtable=0) + self.check_resops(new_with_vtable=0) def test_unwanted_loops(self): mydriver = JitDriver(reds = ['n', 'total', 'm'], greens = []) @@ -163,7 +163,7 @@ return n self.meta_interp(f, [50], backendopt=True) self.check_enter_count_at_most(2) - self.check_loops(call=0) + self.check_resops(call=0) def test_loop_header(self): # artificial test: we enter into the JIT only when can_enter_jit() @@ -187,7 +187,7 @@ assert f(15) == 1 res = self.meta_interp(f, [15], backendopt=True) assert res == 1 - self.check_loops(int_add=1) # I get 13 without the loop_header() + self.check_resops(int_add=2) # I get 13 without the loop_header() def test_omit_can_enter_jit(self): # Simple test comparing the effects of always giving a can_enter_jit(), @@ -249,8 +249,8 @@ m = m - 1 self.meta_interp(f1, [8]) self.check_loop_count(1) - self.check_loops({'int_sub': 1, 'int_gt': 1, 'guard_true': 1, - 'jump': 1}) + self.check_resops({'jump': 2, 'guard_true': 2, 'int_gt': 2, + 'int_sub': 2}) def test_void_red_variable(self): mydriver = JitDriver(greens=[], reds=['a', 'm']) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit