[pypy-commit] pypy jit-leaner-frontend: A failing test, derived from a failing translated pypy. Works on default.
arigo
pypy.commits at gmail.com
Wed Mar 23 13:47:27 EDT 2016
Author: Armin Rigo <arigo at tunes.org>
Branch: jit-leaner-frontend
Changeset: r83298:0520b6a02d2a
Date: 2016-03-23 18:46 +0100
http://bitbucket.org/pypy/pypy/changeset/0520b6a02d2a/
Log: A failing test, derived from a failing translated pypy. Works on
default.
diff --git a/rpython/jit/metainterp/test/test_virtualref.py b/rpython/jit/metainterp/test/test_virtualref.py
--- a/rpython/jit/metainterp/test/test_virtualref.py
+++ b/rpython/jit/metainterp/test/test_virtualref.py
@@ -697,6 +697,58 @@
'force_token': 2, 'setfield_gc': 1
})
+ def test_vref_like_pypy(self):
+ myjitdriver = JitDriver(greens=['n'], reds=['i', 'k', 'ec', 'frame'])
+
+ class ExecutionContext(object):
+ topframeref = vref_None
+
+ def enter(self, frame):
+ frame.f_backref = self.topframeref
+ self.topframeref = virtual_ref(frame)
+
+ def leave(self, frame):
+ frame_vref = self.topframeref
+ self.topframeref = frame.f_backref
+ f_back = frame.f_backref()
+ if f_back:
+ f_back.escaped = True
+ frame_vref()
+ virtual_ref_finish(frame_vref, frame)
+
+ class PyFrame(object):
+ escaped = False
+
+ def dispatch(ec, frame, n, i):
+ k = i
+ while True:
+ myjitdriver.jit_merge_point(n=n, ec=ec, frame=frame, i=i, k=k)
+ i += 1
+ if n == 1:
+ execute_frame(ec, 2, i)
+ if i >= 10:
+ break
+ elif n == 2:
+ execute_frame(ec, 3, i)
+ if i >= k + 3:
+ break
+ elif n == 3:
+ if i % 3 == 0:
+ break
+
+ def execute_frame(ec, n, i):
+ frame = PyFrame()
+ ec.enter(frame)
+ dispatch(ec, frame, n, i)
+ ec.leave(frame)
+ return n
+
+ def entry_point():
+ return execute_frame(ExecutionContext(), 1, 0)
+
+ assert entry_point() == 1
+ self.meta_interp(entry_point, [], inline=True)
+
class TestLLtype(VRefTests, LLJitMixin):
pass
More information about the pypy-commit
mailing list