[pypy-svn] r52821 - pypy/branch/jit-hotpath/pypy/jit/rainbow

arigo at codespeak.net arigo at codespeak.net
Fri Mar 21 20:12:34 CET 2008


Author: arigo
Date: Fri Mar 21 20:12:33 2008
New Revision: 52821

Modified:
   pypy/branch/jit-hotpath/pypy/jit/rainbow/hotpath.py
Log:
Translation fix for some tests.


Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/hotpath.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/hotpath.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/hotpath.py	Fri Mar 21 20:12:33 2008
@@ -215,7 +215,19 @@
 
         class ContinueRunningNormally(Exception):
             _go_through_llinterp_uncaught_ = True     # ugh
+            args_gv = []       # for tests where __init__ is not seen
+            seen_can_enter_jit = False
+
             def __init__(self, args_gv, seen_can_enter_jit):
+                self.args_gv = args_gv
+                self.seen_can_enter_jit = seen_can_enter_jit
+
+            def __str__(self):
+                return 'ContinueRunningNormally(%s)' % (
+                    ', '.join(map(str, self.args_gv)),)
+
+            def decode_args(self):
+                args_gv = self.args_gv
                 assert len(args_gv) == len(ARGS)
                 args = ()
                 i = 0
@@ -223,11 +235,7 @@
                     gv_arg = args_gv[i]
                     args += (gv_arg.revealconst(ARG), )
                     i += 1
-                self.args = args
-                self.seen_can_enter_jit = seen_can_enter_jit
-            def __str__(self):
-                return 'ContinueRunningNormally(%s)' % (
-                    ', '.join(map(str, self.args)),)
+                return args
 
         self.raise_done = raise_done
         RAISE_DONE_FUNC = lltype.FuncType([RES], lltype.Void)
@@ -247,7 +255,7 @@
                 except DoneWithThisFrame, e:
                     return e.result
                 except ContinueRunningNormally, e:
-                    args = e.args
+                    args = e.decode_args()
                     self.interpreter.debug_trace("fb_leave", *args)
                     check_for_immediate_reentry = e.seen_can_enter_jit
 



More information about the Pypy-commit mailing list