[pypy-commit] pypy remove-globals-in-jit: Pff, this test passes when run untranslated, but crashes translated.
arigo
noreply at buildbot.pypy.org
Mon Dec 3 00:37:24 CET 2012
Author: Armin Rigo <arigo at tunes.org>
Branch: remove-globals-in-jit
Changeset: r59264:73913dbe29d7
Date: 2012-12-02 15:13 -0800
http://bitbucket.org/pypy/pypy/changeset/73913dbe29d7/
Log: Pff, this test passes when run untranslated, but crashes translated.
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
@@ -1386,6 +1386,55 @@
print main(100)
res = self.meta_interp(main, [100], inline=True, enable_opts='')
+ def test_stuff_from_backend_test(self):
+ class Thing(object):
+ def __init__(self, val):
+ self.val = val
+
+ class Frame(object):
+ _virtualizable2_ = ['thing']
+
+ driver = JitDriver(greens = ['codeno'], reds = ['i', 'frame'],
+ virtualizables = ['frame'],
+ get_printable_location = lambda codeno: str(codeno))
+ class SomewhereElse(object):
+ pass
+
+ somewhere_else = SomewhereElse()
+
+ @dont_look_inside
+ def change(newthing):
+ somewhere_else.frame.thing = newthing
+
+ def main(codeno):
+ frame = Frame()
+ somewhere_else.frame = frame
+ frame.thing = Thing(0)
+ portal(codeno, frame)
+ return frame.thing.val
+
+ def portal(codeno, frame):
+ i = 0
+ while i < 10:
+ driver.can_enter_jit(frame=frame, codeno=codeno, i=i)
+ driver.jit_merge_point(frame=frame, codeno=codeno, i=i)
+ nextval = frame.thing.val
+ if codeno == 0:
+ subframe = Frame()
+ subframe.thing = Thing(nextval)
+ nextval = portal(1, subframe)
+ elif frame.thing.val > 40:
+ change(Thing(13))
+ nextval = 13
+ frame.thing = Thing(nextval + 1)
+ i += 1
+ return frame.thing.val
+
+ res = self.meta_interp(main, [0], inline=True)
+ print hex(res)
+ assert res == main(0)
+
+
class TestOOtype(#ExplicitVirtualizableTests,
ImplicitVirtualizableTests,
OOJitMixin):
More information about the pypy-commit
mailing list