[pypy-svn] r74337 - in pypy/trunk/pypy/jit/metainterp: . test

arigo at codespeak.net arigo at codespeak.net
Mon May 3 14:46:43 CEST 2010


Author: arigo
Date: Mon May  3 14:46:42 2010
New Revision: 74337

Modified:
   pypy/trunk/pypy/jit/metainterp/pyjitpl.py
   pypy/trunk/pypy/jit/metainterp/test/test_exception.py
Log:
Test and fix.


Modified: pypy/trunk/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/pyjitpl.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/pyjitpl.py	Mon May  3 14:46:42 2010
@@ -1396,13 +1396,13 @@
         etype, evalue = self.cpu.get_overflow_error()
         return self.finishframe_exception(
             self.cpu.ts.get_exception_box(etype),
-            self.cpu.ts.get_exc_value_box(evalue))
+            self.cpu.ts.get_exc_value_box(evalue).constbox())
 
     def raise_zero_division_error(self):
         etype, evalue = self.cpu.get_zero_division_error()
         return self.finishframe_exception(
             self.cpu.ts.get_exception_box(etype),
-            self.cpu.ts.get_exc_value_box(evalue))
+            self.cpu.ts.get_exc_value_box(evalue).constbox())
 
     def create_empty_history(self):
         warmrunnerstate = self.staticdata.state

Modified: pypy/trunk/pypy/jit/metainterp/test/test_exception.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/test/test_exception.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/test/test_exception.py	Mon May  3 14:46:42 2010
@@ -556,6 +556,20 @@
                                optimizer=OPTIMIZER_SIMPLE)
         assert res == 8
 
+
+    def test_overflowerror_escapes(self):
+        def g(x):
+            return ovfcheck(x + 1)
+        def f(x):
+            try:
+                return g(x)
+            except Exception, e:
+                if isinstance(e, OverflowError):
+                    return -42
+                raise
+        res = self.interp_operations(f, [sys.maxint])
+        assert res == -42
+
 class MyError(Exception):
     def __init__(self, n):
         self.n = n



More information about the Pypy-commit mailing list