[pypy-svn] r64477 - pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test
fijal at codespeak.net
fijal at codespeak.net
Mon Apr 20 19:49:33 CEST 2009
Author: fijal
Date: Mon Apr 20 19:49:33 2009
New Revision: 64477
Modified:
pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_exception.py
Log:
two passing tests + a fix for int_lshift
Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_exception.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_exception.py (original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_exception.py Mon Apr 20 19:49:33 2009
@@ -39,6 +39,47 @@
'int_gt': 1, 'guard_true': 1,
'int_sub': 1})
+
+ def test_bridge_from_guard_exception(self):
+ myjitdriver = JitDriver(greens = [], reds = ['n'])
+ def check(n):
+ if n % 2:
+ raise ValueError
+
+ def f(n):
+ while n > 0:
+ myjitdriver.can_enter_jit(n=n)
+ myjitdriver.jit_merge_point(n=n)
+ try:
+ check(n)
+ n -= 1
+ except ValueError:
+ n -= 3
+ return n
+
+ res = self.meta_interp(f, [20], policy=StopAtXPolicy(check))
+ assert res == f(20)
+
+ def test_bridge_from_guard_no_exception(self):
+ myjitdriver = JitDriver(greens = [], reds = ['n'])
+ def check(n):
+ if n % 2 == 0:
+ raise ValueError
+
+ def f(n):
+ while n > 0:
+ myjitdriver.can_enter_jit(n=n)
+ myjitdriver.jit_merge_point(n=n)
+ try:
+ check(n)
+ n -= 1
+ except ValueError:
+ n -= 3
+ return n
+
+ res = self.meta_interp(f, [20], policy=StopAtXPolicy(check))
+ assert res == f(20)
+
def test_loop(self):
myjitdriver = JitDriver(greens = [], reds = ['n'])
def check(n):
@@ -322,6 +363,8 @@
assert res == 1
def test_int_lshift_ovf(self):
+ from pypy.jit.metainterp.simple_optimize import Optimizer
+
myjitdriver = JitDriver(greens = [], reds = ['n', 'x', 'y'])
def f(x, y, n):
while n < 100:
@@ -335,7 +378,7 @@
n += 1
return n
- res = self.meta_interp(f, [1, 1, 0])
+ res = self.meta_interp(f, [1, 1, 0], optimizer=Optimizer)
assert res == f(1, 1, 0)
def test_reraise_through_portal(self):
More information about the Pypy-commit
mailing list