[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