Author: Alex Gaynor <[email protected]>
Branch: virtualref-virtualizable
Changeset: r63317:b2c06f6cdbc7
Date: 2013-04-13 11:00 -0700
http://bitbucket.org/pypy/pypy/changeset/b2c06f6cdbc7/
Log: a failing test
diff --git a/rpython/jit/metainterp/test/test_virtualizable.py
b/rpython/jit/metainterp/test/test_virtualizable.py
--- a/rpython/jit/metainterp/test/test_virtualizable.py
+++ b/rpython/jit/metainterp/test/test_virtualizable.py
@@ -5,7 +5,7 @@
from rpython.jit.metainterp.optimizeopt.test.test_util import LLtypeMixin
from rpython.jit.metainterp.test.support import LLJitMixin, OOJitMixin
from rpython.jit.metainterp.warmspot import get_translator
-from rpython.rlib.jit import JitDriver, hint, dont_look_inside, promote
+from rpython.rlib.jit import JitDriver, hint, dont_look_inside, promote,
virtual_ref
from rpython.rlib.rarithmetic import intmask
from rpython.rtyper.annlowlevel import hlstr
from rpython.rtyper.extregistry import ExtRegistryEntry
@@ -434,8 +434,7 @@
# ------------------------------
-class ImplicitVirtualizableTests:
-
+class ImplicitVirtualizableTests(object):
def test_simple_implicit(self):
myjitdriver = JitDriver(greens = [], reds = ['frame'],
virtualizables = ['frame'])
@@ -1443,6 +1442,33 @@
print hex(res)
assert res == main(0)
+ def test_force_virtualref_to_virtualizable(self):
+ jitdriver = JitDriver(
+ greens=[],
+ reds=['i', 'n', 'f', 'f_ref'],
+ virtualizables=['f']
+ )
+
+ class Frame(object):
+ _virtualizable2_ = ['x']
+
+ def main(n):
+ f = Frame()
+ f.x = 1
+ f_ref = virtual_ref(f)
+ i = 0
+ while i < n:
+ jitdriver.jit_merge_point(f=f, i=i, f_ref=f_ref, n=n)
+ i += f_ref().x
+ return i
+
+ res = self.meta_interp(main, [10])
+ assert res == main(10)
+ self.check_resops({
+ "int_lt": 1, "guard_true": 1, "int_add": 1, "jump": 1,
+ })
+
+
class TestOOtype(#ExplicitVirtualizableTests,
ImplicitVirtualizableTests,
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit