[pypy-svn] r65184 - in pypy/branch/pyjitpl5/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Sat May 9 16:55:34 CEST 2009
Author: arigo
Date: Sat May 9 16:55:32 2009
New Revision: 65184
Modified:
pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_recursive.py
Log:
Test and fix.
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py Sat May 9 16:55:32 2009
@@ -1314,7 +1314,7 @@
if must_compile:
guard_op = resumedescr.get_guard_op()
suboperations = guard_op.suboperations
- if suboperations[-1].opnum != rop.FAIL:
+ if suboperations[-1] is not guard_failure:
must_compile = False
log("ignoring old version of the guard")
else:
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_recursive.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_recursive.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_recursive.py Sat May 9 16:55:32 2009
@@ -2,6 +2,7 @@
from pypy.rlib.jit import JitDriver
from pypy.jit.metainterp.test.test_basic import LLJitMixin, OOJitMixin
from pypy.jit.metainterp.simple_optimize import Optimizer
+from pypy.jit.metainterp.policy import StopAtXPolicy
class RecursiveTests:
@@ -74,6 +75,26 @@
assert res == main(10)
self.check_enter_count_at_most(10)
+ def test_bug_1(self):
+ myjitdriver = JitDriver(greens=[], reds=['n', 'i', 'stack'])
+ def opaque(n, i):
+ if n == 1 and i == 19:
+ for j in range(20):
+ res = f(0) # recurse repeatedly, 20 times
+ assert res == 0
+ def f(n):
+ stack = [n]
+ i = 0
+ while i < 20:
+ myjitdriver.can_enter_jit(n=n, i=i, stack=stack)
+ myjitdriver.jit_merge_point(n=n, i=i, stack=stack)
+ opaque(n, i)
+ i += 1
+ return stack.pop()
+ res = self.meta_interp(f, [1], optimizer=Optimizer, repeat=2,
+ policy=StopAtXPolicy(opaque))
+ assert res == 1
+
class TestLLtype(RecursiveTests, LLJitMixin):
pass
More information about the Pypy-commit
mailing list