Author: Alex Gaynor <alex.gay...@gmail.com> Branch: fix-lookinside-iff-oopspec Changeset: r59221:e0252730e86d Date: 2012-12-02 10:33 -0800 http://bitbucket.org/pypy/pypy/changeset/e0252730e86d/
Log: (fijal, alex, mike) initial work 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 @@ -1,6 +1,6 @@ import py from pypy.rlib.objectmodel import newlist_hint -from pypy.rlib.jit import JitDriver +from pypy.rlib.jit import JitDriver, promote from pypy.jit.metainterp.test.support import LLJitMixin, OOJitMixin @@ -272,6 +272,22 @@ r = self.interp_operations(f, [-1]) assert r == 0 + def test_list_mul_nonzero(self): + driver = JitDriver(greens=[], reds=['i', 'n']) + + def f(n): + i = 0 + while i < n: + driver.jit_merge_point(i=i, n=n) + x = promote(n) + l = [-1] * x + i -= l[2] + return i + res = self.meta_interp(f, [5]) + assert res == 5 + self.check_resops(call=0) + + class TestOOtype(ListTests, OOJitMixin): pass diff --git a/pypy/rlib/jit.py b/pypy/rlib/jit.py --- a/pypy/rlib/jit.py +++ b/pypy/rlib/jit.py @@ -161,8 +161,7 @@ def trampoline(%(arguments)s): return func(%(arguments)s) if hasattr(func, "oopspec"): - # XXX: This seems like it should be here, but it causes errors. - # trampoline.oopspec = func.oopspec + trampoline.oopspec = func.oopspec del func.oopspec trampoline.__name__ = func.__name__ + "_trampoline" trampoline._annspecialcase_ = "specialize:call_location" _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit