[pypy-svn] r64571 - pypy/branch/pyjitpl5/pypy/jit/metainterp/test

fijal at codespeak.net fijal at codespeak.net
Wed Apr 22 17:21:19 CEST 2009


Author: fijal
Date: Wed Apr 22 17:21:17 2009
New Revision: 64571

Modified:
   pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_exception.py
Log:
a passing test


Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_exception.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_exception.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_exception.py	Wed Apr 22 17:21:17 2009
@@ -430,6 +430,42 @@
         #    ENTER             - compile the leaving path (raising MyError)
         self.check_enter_count(4)
 
+
+    def test_bridge_from_interpreter_exc_2(self):
+        from pypy.jit.metainterp.simple_optimize import Optimizer
+        
+        mydriver = JitDriver(reds = ['n'], greens = [])
+
+        def x(n):
+            if n == 1:
+                raise MyError(n)
+        
+        def f(n):
+            try:
+                while n > 0:
+                    mydriver.can_enter_jit(n=n)
+                    mydriver.jit_merge_point(n=n)
+                    x(n)
+                    n -= 1
+            except MyError:
+                z()
+        
+        def z():
+            raise ValueError
+
+        def main(n):
+            try:
+                f(n)
+                return 3
+            except MyError, e:
+                return e.n
+            except ValueError:
+                return 8
+
+        res = self.meta_interp(main, [41], repeat=7, policy=StopAtXPolicy(x),
+                               optimizer=Optimizer)
+        assert res == 8
+
 class MyError(Exception):
     def __init__(self, n):
         self.n = n



More information about the Pypy-commit mailing list