[pypy-svn] r51713 - in pypy/branch/jit-refactoring/pypy/jit/rainbow: . test

cfbolz at codespeak.net cfbolz at codespeak.net
Thu Feb 21 00:39:05 CET 2008


Author: cfbolz
Date: Thu Feb 21 00:39:04 2008
New Revision: 51713

Modified:
   pypy/branch/jit-refactoring/pypy/jit/rainbow/interpreter.py
   pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_interpreter.py
Log:
move finish_jitstate to a more commonly accessible place than a test


Modified: pypy/branch/jit-refactoring/pypy/jit/rainbow/interpreter.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/jit/rainbow/interpreter.py	(original)
+++ pypy/branch/jit-refactoring/pypy/jit/rainbow/interpreter.py	Thu Feb 21 00:39:04 2008
@@ -71,6 +71,20 @@
             self.bytecode_loop()
         return self.jitstate
 
+    def finish_jitstate(self, graphsigtoken):
+        jitstate = self.jitstate
+        exceptiondesc = self.exceptiondesc
+        returnbox = rtimeshift.getreturnbox(jitstate)
+        gv_ret = returnbox.getgenvar(jitstate)
+        builder = jitstate.curbuilder
+        for virtualizable_box in jitstate.virtualizables:
+            assert isinstance(virtualizable_box, rvalue.PtrRedBox)
+            content = virtualizable_box.content
+            assert isinstance(content, rcontainer.VirtualizableStruct)
+            content.store_back(jitstate)        
+        exceptiondesc.store_global_excdata(jitstate)
+        jitstate.curbuilder.finish_and_return(graphsigtoken, gv_ret)
+
     def bytecode_loop(self):
         while 1:
             bytecode = self.load_2byte()

Modified: pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_interpreter.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_interpreter.py	(original)
+++ pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_interpreter.py	Thu Feb 21 00:39:04 2008
@@ -156,17 +156,6 @@
         jitstate = rtimeshift.JITState(builder, None,
                                        writer.exceptiondesc.null_exc_type_box,
                                        writer.exceptiondesc.null_exc_value_box)
-        def ll_finish_jitstate(jitstate, exceptiondesc, graphsigtoken):
-            returnbox = rtimeshift.getreturnbox(jitstate)
-            gv_ret = returnbox.getgenvar(jitstate)
-            builder = jitstate.curbuilder
-            for virtualizable_box in jitstate.virtualizables:
-                assert isinstance(virtualizable_box, rvalue.PtrRedBox)
-                content = virtualizable_box.content
-                assert isinstance(content, rcontainer.VirtualizableStruct)
-                content.store_back(jitstate)        
-            exceptiondesc.store_global_excdata(jitstate)
-            jitstate.curbuilder.finish_and_return(graphsigtoken, gv_ret)
         # build arguments
         greenargs = []
         redargs = []
@@ -188,8 +177,7 @@
                 red_i += 1
         jitstate = writer.interpreter.run(jitstate, jitcode, greenargs, redargs)
         if jitstate is not None:
-            ll_finish_jitstate(jitstate, writer.interpreter.exceptiondesc,
-                               sigtoken)
+            writer.interpreter.finish_jitstate(sigtoken)
         builder.end()
         generated = gv_generated.revealconst(lltype.Ptr(self.RESIDUAL_FUNCTYPE))
         graph = generated._obj.graph



More information about the Pypy-commit mailing list