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

cfbolz at codespeak.net cfbolz at codespeak.net
Mon Feb 4 13:47:02 CET 2008


Author: cfbolz
Date: Mon Feb  4 13:47:01 2008
New Revision: 51249

Modified:
   pypy/branch/jit-refactoring/pypy/jit/rainbow/codewriter.py
   pypy/branch/jit-refactoring/pypy/jit/rainbow/interpreter.py
   pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_interpreter.py
Log:
put the exceptiondesc into the interpreter and the codewriter


Modified: pypy/branch/jit-refactoring/pypy/jit/rainbow/codewriter.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/jit/rainbow/codewriter.py	(original)
+++ pypy/branch/jit-refactoring/pypy/jit/rainbow/codewriter.py	Mon Feb  4 13:47:01 2008
@@ -3,7 +3,7 @@
 from pypy.rpython.lltypesystem import lltype
 from pypy.jit.hintannotator.model import originalconcretetype
 from pypy.jit.hintannotator import model as hintmodel
-from pypy.jit.timeshifter import rtimeshift, rvalue
+from pypy.jit.timeshifter import rtimeshift, rvalue, exception
 from pypy.jit.timeshifter.greenkey import KeyDesc
 from pypy.jit.rainbow.interpreter import JitCode, JitInterpreter
 from pypy.translator.backendopt.removenoops import remove_same_as
@@ -16,7 +16,11 @@
         self.translator = t
         self.annotator = t.annotator
         self.hannotator = hannotator
-        self.interpreter = JitInterpreter()
+        etrafo = hannotator.exceptiontransformer
+        type_system = hannotator.base_translator.rtyper.type_system.name
+        self.exceptiondesc = exception.ExceptionDesc(
+            RGenOp, etrafo, type_system, False)
+        self.interpreter = JitInterpreter(self.exceptiondesc)
         self.RGenOp = RGenOp
         self.current_block = None
         self.raise_analyzer = hannotator.exceptiontransformer.raise_analyzer
@@ -412,6 +416,9 @@
     def serialize_op_indirect_call(self, op):
         XXX
 
+    def serialize_op_getfield(self, op):
+        XXX
+
     # call handling
 
     def graphs_from(self, spaceop):

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	Mon Feb  4 13:47:01 2008
@@ -42,7 +42,8 @@
 STOP = STOP()
 
 class JitInterpreter(object):
-    def __init__(self):
+    def __init__(self, exceptiondesc):
+        self.exceptiondesc = exceptiondesc
         self.opcode_implementations = []
         self.opcode_descs = []
         self.opname_to_index = {}

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	Mon Feb  4 13:47:01 2008
@@ -8,7 +8,7 @@
 from pypy.jit.codegen.llgraph.rgenop import RGenOp as LLRGenOp
 from pypy.jit.rainbow.test.test_serializegraph import AbstractSerializationTest
 from pypy.jit.rainbow import bytecode
-from pypy.jit.timeshifter import rtimeshift, exception, rvalue
+from pypy.jit.timeshifter import rtimeshift, rvalue
 from pypy.rpython.lltypesystem import lltype, rstr
 from pypy.rpython.llinterp import LLInterpreter
 from pypy.annotation import model as annmodel
@@ -117,17 +117,13 @@
     def interpret(self, ll_function, values, opt_consts=[], *args, **kwds):
         # XXX clean this mess up
         writer, jitcode, argcolors = self.serialize(ll_function, values)
-        base_annotator = writer.translator.annotator
-        etrafo = base_annotator.exceptiontransformer
-        type_system = base_annotator.base_translator.rtyper.type_system.name
-        edesc = exception.ExceptionDesc(writer.RGenOp, etrafo, type_system, False)
         rgenop = writer.RGenOp()
         sigtoken = rgenop.sigToken(self.RESIDUAL_FUNCTYPE)
         builder, gv_generated, inputargs_gv = rgenop.newgraph(sigtoken, "generated")
         builder.start_writing()
         jitstate = rtimeshift.JITState(builder, None,
-                                       edesc.null_exc_type_box,
-                                       edesc.null_exc_value_box)
+                                       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)
@@ -160,7 +156,8 @@
                 red_i += 1
         jitstate = writer.interpreter.run(jitstate, jitcode, greenargs, redargs)
         if jitstate is not None:
-            ll_finish_jitstate(jitstate, edesc, sigtoken)
+            ll_finish_jitstate(jitstate, writer.interpreter.exceptiondesc,
+                               sigtoken)
         builder.end()
         generated = gv_generated.revealconst(lltype.Ptr(self.RESIDUAL_FUNCTYPE))
         graph = generated._obj.graph



More information about the Pypy-commit mailing list