Author: Alex Gaynor <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit