[pypy-svn] r62752 - pypy/trunk/pypy/jit/metainterp/test
fijal at codespeak.net
fijal at codespeak.net
Mon Mar 9 13:02:01 CET 2009
Author: fijal
Date: Mon Mar 9 13:02:00 2009
New Revision: 62752
Modified:
pypy/trunk/pypy/jit/metainterp/test/test_virtualizable.py
Log:
one more test + update external_read
Modified: pypy/trunk/pypy/jit/metainterp/test/test_virtualizable.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/test/test_virtualizable.py (original)
+++ pypy/trunk/pypy/jit/metainterp/test/test_virtualizable.py Mon Mar 9 13:02:00 2009
@@ -342,8 +342,41 @@
res = self.meta_interp(f, [10], policy=StopAtXPolicy(g))
assert res == 0
+ def test_external_pass(self):
+ jitdriver = JitDriver(greens = [], reds = ['frame', 'n', 'z'],
+ virtualizables = ['frame'])
+
+ class BaseFrame(object):
+ _virtualizable2_ = True
+
+ def __init__(self, x):
+ self.x = x
+
+ class Frame(BaseFrame):
+ pass
+
+ def g(x):
+ return x[1] == 1
+
+ def f(n):
+ frame = Frame([1,2,3])
+ z = 0
+ while n > 0:
+ jitdriver.can_enter_jit(frame=frame, n=n, z=z)
+ jitdriver.jit_merge_point(frame=frame, n=n, z=z)
+ z += g(frame.x)
+ n -= 1
+ return z
+
+ res = self.meta_interp(f, [10], policy=StopAtXPolicy(g))
+ assert res == f(10)
+
+
def test_external_read(self):
py.test.skip("Fails")
+ jitdriver = JitDriver(greens = [], reds = ['frame'],
+ virtualizables = ['frame'])
+
class Frame(object):
_virtualizable2_ = True
class SomewhereElse:
@@ -361,12 +394,13 @@
frame.y = 10
somewhere_else.top_frame = frame
while frame.x > 0:
+ jitdriver.can_enter_jit(frame=frame)
+ jitdriver.jit_merge_point(frame=frame)
frame.x -= g()
frame.y += 1
return frame.x
- res = self.meta_interp(f, [123], exceptions=False,
- policy=StopAtXPolicy(g))
+ res = self.meta_interp(f, [123], policy=StopAtXPolicy(g))
assert res == f(123)
self.check_loops(getfield_gc=0, setfield_gc=0)
More information about the Pypy-commit
mailing list