Author: Hakan Ardo <ha...@debian.org> Branch: jit-short_from_state Changeset: r45000:03dec640d1a9 Date: 2011-06-19 13:13 +0200 http://bitbucket.org/pypy/pypy/changeset/03dec640d1a9/
Log: failing test diff --git a/pypy/jit/metainterp/test/test_ajit.py b/pypy/jit/metainterp/test/test_ajit.py --- a/pypy/jit/metainterp/test/test_ajit.py +++ b/pypy/jit/metainterp/test/test_ajit.py @@ -2621,6 +2621,73 @@ # 1 preamble and 6 speciealized versions of each loop self.check_tree_loop_count(2*(1 + 6)) + def test_frame_finished_during_retrace(self): + class Base(object): + pass + class A(Base): + def __init__(self, a): + self.val = a + self.num = 1 + def inc(self): + return A(self.val + 1) + class B(Base): + def __init__(self, a): + self.val = a + self.num = 1000 + def inc(self): + return B(self.val + 1) + myjitdriver = JitDriver(greens = [], reds = ['sa', 'a']) + def f(): + myjitdriver.set_param('threshold', 3) + myjitdriver.set_param('trace_eagerness', 2) + a = A(0) + sa = 0 + while a.val < 8: + myjitdriver.jit_merge_point(a=a, sa=sa) + a = a.inc() + if a.val > 4: + a = B(a.val) + sa += a.num + return sa + res = self.meta_interp(f, []) + assert res == f() + + def test_frame_finished_during_continued_retrace(self): + class Base(object): + pass + class A(Base): + def __init__(self, a): + self.val = a + self.num = 100 + def inc(self): + return A(self.val + 1) + class B(Base): + def __init__(self, a): + self.val = a + self.num = 10000 + def inc(self): + return B(self.val + 1) + myjitdriver = JitDriver(greens = [], reds = ['sa', 'b', 'a']) + def f(b): + myjitdriver.set_param('threshold', 6) + myjitdriver.set_param('trace_eagerness', 4) + a = A(0) + sa = 0 + while a.val < 15: + myjitdriver.jit_merge_point(a=a, b=b, sa=sa) + a = a.inc() + if a.val > 8: + a = B(a.val) + if b == 1: + b = 2 + else: + b = 1 + sa += a.num + b + return sa + res = self.meta_interp(f, [1]) + assert res == f(1) + + class TestOOtype(BasicTests, OOJitMixin): def test_oohash(self): _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit