[pypy-svn] r67238 - in pypy/branch/pyjitpl5/pypy/jit: backend/cli backend/llgraph backend/llvm backend/x86 metainterp metainterp/test tl/spli/test

antocuni at codespeak.net antocuni at codespeak.net
Thu Aug 27 15:21:16 CEST 2009


Author: antocuni
Date: Thu Aug 27 15:21:15 2009
New Revision: 67238

Modified:
   pypy/branch/pyjitpl5/pypy/jit/backend/cli/runner.py
   pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/runner.py
   pypy/branch/pyjitpl5/pypy/jit/backend/llvm/runner.py
   pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py
   pypy/branch/pyjitpl5/pypy/jit/metainterp/codewriter.py
   pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py
   pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py
   pypy/branch/pyjitpl5/pypy/jit/metainterp/virtualizable.py
   pypy/branch/pyjitpl5/pypy/jit/metainterp/warmspot.py
   pypy/branch/pyjitpl5/pypy/jit/tl/spli/test/test_jit.py
Log:
revert r67237, as it was supposed to go to a branch (thanks pedronis)


Modified: pypy/branch/pyjitpl5/pypy/jit/backend/cli/runner.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/cli/runner.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/cli/runner.py	Thu Aug 27 15:21:15 2009
@@ -11,7 +11,6 @@
 from pypy.jit.backend.llgraph.runner import KeyManager
 from pypy.translator.cli import dotnet
 from pypy.translator.cli.dotnet import CLR
-from pypy.jit.metainterp.typesystem import oohelper
 
 System = CLR.System
 OpCodes = System.Reflection.Emit.OpCodes
@@ -30,8 +29,7 @@
 
 
 class CliCPU(model.AbstractCPU):
-    
-    ts = oohelper
+
     is_oo = True
 
     def __init__(self, rtyper, stats, translate_support_code=False,

Modified: pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/runner.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/runner.py	Thu Aug 27 15:21:15 2009
@@ -12,7 +12,7 @@
 from pypy.jit.metainterp.resoperation import ResOperation, rop
 from pypy.jit.backend import model
 from pypy.jit.backend.llgraph import llimpl, symbolic
-from pypy.jit.metainterp.typesystem import llhelper, oohelper
+
 
 class MiniStats:
     pass
@@ -242,7 +242,6 @@
 
 class LLtypeCPU(BaseCPU):
     is_oo = False
-    ts = llhelper
 
     def __init__(self, *args, **kwds):
         BaseCPU.__init__(self, *args, **kwds)
@@ -444,7 +443,6 @@
 
 class OOtypeCPU(BaseCPU):
     is_oo = True
-    ts = oohelper
 
     @staticmethod
     def fielddescrof(T, fieldname):

Modified: pypy/branch/pyjitpl5/pypy/jit/backend/llvm/runner.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/llvm/runner.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/llvm/runner.py	Thu Aug 27 15:21:15 2009
@@ -10,13 +10,11 @@
 from pypy.jit.metainterp import history
 from pypy.jit.metainterp.resoperation import rop, ResOperation
 from pypy.jit.backend.x86 import symbolic     # xxx
-from pypy.jit.metainterp.typesystem import llhelper
 
 history.TreeLoop._llvm_compiled_index = -1
 
 
 class LLVMCPU(object):
-    ts = llhelper
     is_oo = False
     logger_cls = None
     RAW_VALUE = rffi.CFixedArray(rffi.ULONGLONG, 1)

Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py	Thu Aug 27 15:21:15 2009
@@ -16,7 +16,6 @@
 from pypy.jit.backend.x86 import symbolic
 from pypy.jit.metainterp.resoperation import rop, opname
 from pypy.rlib.objectmodel import r_dict
-from pypy.jit.metainterp.typesystem import llhelper
 
 history.TreeLoop._x86_compiled = 0
 history.TreeLoop._x86_bootstrap_code = 0
@@ -50,7 +49,6 @@
 class CPU386(object):
     debug = True
     is_oo = False
-    ts = llhelper
     logger_cls = x86Logger
 
     BOOTSTRAP_TP = lltype.FuncType([], lltype.Signed)

Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/codewriter.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/codewriter.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/codewriter.py	Thu Aug 27 15:21:15 2009
@@ -48,7 +48,7 @@
         self.values = []
         for graph in graphs:
             fnptr = codewriter.rtyper.getcallable(graph)
-            fnaddress = codewriter.cpu.ts.cast_fnptr_to_root(fnptr)
+            fnaddress = codewriter.ts.cast_fnptr_to_root(fnptr)
             self.keys.append(fnaddress)
             self.values.append(codewriter.get_jitcode(graph))
         self.dict = None
@@ -80,7 +80,7 @@
 class CodeWriter(object):
     portal_graph = None
 
-    def __init__(self, metainterp_sd, policy):
+    def __init__(self, metainterp_sd, policy, ts):
         self.all_prebuilt_values = dict_equal_consts()
         self.all_graphs = {}
         self.all_indirectcallsets = {}
@@ -91,6 +91,7 @@
         self.rtyper = metainterp_sd.cpu.rtyper
         self.cpu = metainterp_sd.cpu
         self.policy = policy
+        self.ts = ts
         self.counter = 0
         self.raise_analyzer = RaiseAnalyzer(self.rtyper.annotator.translator)
         self.class_sizes = []

Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py	Thu Aug 27 15:21:15 2009
@@ -9,6 +9,7 @@
 from pypy.jit.metainterp.history import Const, ConstInt, Box
 from pypy.jit.metainterp.resoperation import rop
 from pypy.jit.metainterp import codewriter, executor
+from pypy.jit.metainterp import typesystem
 from pypy.rlib.rarithmetic import intmask
 from pypy.rlib.objectmodel import specialize
 
@@ -844,7 +845,7 @@
         greenkey = self.env[:num_green_args]
         sd = self.metainterp.staticdata
         loc = sd.state.get_location_str(greenkey)
-        constloc = self.metainterp.cpu.ts.conststr(loc)
+        constloc = sd.ts.conststr(loc)
         self.metainterp.history.record(rop.DEBUG_MERGE_POINT,
                                        [constloc], None)
 
@@ -860,7 +861,7 @@
     def opimpl_goto_if_exception_mismatch(self, vtableref, next_exc_target):
         assert isinstance(self.exception_box, Const)    # XXX
         cpu = self.metainterp.cpu
-        ts = self.metainterp.cpu.ts
+        ts = self.metainterp.staticdata.ts
         if not ts.subclassOf(cpu, self.exception_box, vtableref):
             self.pc = next_exc_target
 
@@ -965,7 +966,7 @@
             return box     # no promotion needed, already a Const
 
     def cls_of_box(self, box):
-        return self.metainterp.cpu.ts.cls_of_box(self.metainterp.cpu, box)
+        return self.metainterp.staticdata.ts.cls_of_box(self.metainterp.cpu, box)
 
     @specialize.arg(1)
     def execute(self, opnum, argboxes, descr=None):
@@ -1006,6 +1007,11 @@
         self.optimize_loop = optimizer.optimize_loop
         self.optimize_bridge = optimizer.optimize_bridge
 
+        if self.cpu.is_oo:
+            self.ts = typesystem.oohelper
+        else:
+            self.ts = typesystem.llhelper
+
         if profile is not None:
             self.profiler = profile()
         else:
@@ -1059,8 +1065,8 @@
             class_sizes[vtable] = sizedescr
         self.cpu.set_class_sizes(class_sizes)
 
-    def generate_bytecode(self, policy):
-        self._codewriter = codewriter.CodeWriter(self, policy)
+    def generate_bytecode(self, policy, ts):
+        self._codewriter = codewriter.CodeWriter(self, policy, ts)
         self.portal_code = self._codewriter.make_portal_bytecode(
             self.portal_graph)
         self._class_sizes = self._codewriter.class_sizes
@@ -1152,7 +1158,7 @@
         #  - all subclasses of JitException
         if we_are_translated():
             from pypy.jit.metainterp.warmspot import JitException
-            e = self.cpu.ts.get_exception_obj(excvaluebox)
+            e = self.staticdata.ts.get_exception_obj(excvaluebox)
             if isinstance(e, JitException) or isinstance(e, AssertionError):
                 raise Exception, e
         #
@@ -1177,14 +1183,14 @@
     def raise_overflow_error(self):
         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.staticdata.ts.get_exception_box(etype),
+            self.staticdata.ts.get_exc_value_box(evalue))
 
     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.staticdata.ts.get_exception_box(etype),
+            self.staticdata.ts.get_exc_value_box(evalue))
 
     def create_empty_history(self):
         self.history = history.History(self.cpu)
@@ -1386,20 +1392,20 @@
         # save and restore all the boxes that are also used by callers.
         if self.history.inputargs is not None:
             for box in self.history.inputargs:
-                self.cpu.ts.clean_box(box)
+                self.staticdata.ts.clean_box(box)
         lists = [self.history.operations]
         while lists:
             for op in lists.pop():
                 if op is None:
                     continue
                 if op.result is not None:
-                    self.cpu.ts.clean_box(op.result)
+                    self.staticdata.ts.clean_box(op.result)
                 if op.suboperations is not None:
                     lists.append(op.suboperations)
                 if op.optimized is not None:
                     lists.append(op.optimized.suboperations)
                     if op.optimized.result is not None:
-                        self.cpu.ts.clean_box(op.optimized.result)
+                        self.staticdata.ts.clean_box(op.optimized.result)
 
     def prepare_resume_from_failure(self, opnum):
         if opnum == rop.GUARD_TRUE:     # a goto_if_not that jumps only now
@@ -1594,8 +1600,8 @@
         self.cpu.clear_exception()
         frame = self.framestack[-1]
         if etype:
-            exception_box = self.cpu.ts.get_exception_box(etype)
-            exc_value_box = self.cpu.ts.get_exc_value_box(evalue)
+            exception_box = self.staticdata.ts.get_exception_box(etype)
+            exc_value_box = self.staticdata.ts.get_exc_value_box(evalue)
             op = frame.generate_guard(frame.pc, rop.GUARD_EXCEPTION,
                                       None, [exception_box])
             if op:

Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py	Thu Aug 27 15:21:15 2009
@@ -73,7 +73,7 @@
                                             self.type_system, policy=policy,
                                             optimizer=simple_optimize,
                                             **kwds)
-        cw = codewriter.CodeWriter(metainterp.staticdata, policy)
+        cw = codewriter.CodeWriter(metainterp.staticdata, policy, self.ts)
         graph = rtyper.annotator.translator.graphs[0]
         graph_key = (graph, None)
         maingraph = cw.make_one_bytecode(graph_key, False)
@@ -103,6 +103,7 @@
 class LLJitMixin(JitMixin):
     type_system = 'lltype'
     CPUClass = runner.LLtypeCPU
+    ts = LLTypeHelper()
 
     @staticmethod
     def Ptr(T):
@@ -129,6 +130,7 @@
 class OOJitMixin(JitMixin):
     type_system = 'ootype'
     CPUClass = runner.OOtypeCPU
+    ts = OOTypeHelper()
 
     @staticmethod
     def Ptr(T):

Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/virtualizable.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/virtualizable.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/virtualizable.py	Thu Aug 27 15:21:15 2009
@@ -93,9 +93,9 @@
         self.array_field_descrs = [cpu.fielddescrof(VTYPE, name)
                                    for name in array_fields]
         #
-        getlength = cpu.ts.getlength
-        getarrayitem = cpu.ts.getarrayitem
-        setarrayitem = cpu.ts.setarrayitem
+        getlength = warmrunnerdesc.ts.getlength
+        getarrayitem = warmrunnerdesc.ts.getarrayitem
+        setarrayitem = warmrunnerdesc.ts.setarrayitem
         #
         def read_boxes(cpu, virtualizable):
             boxes = []
@@ -178,7 +178,7 @@
         force_if_necessary._always_inline_ = True
         #
         all_graphs = self.warmrunnerdesc.translator.graphs
-        ts = self.warmrunnerdesc.cpu.ts
+        ts = self.warmrunnerdesc.ts
         (_, FUNCPTR) = ts.get_FuncType([self.VTYPEPTR], lltype.Void)
         funcptr = self.warmrunnerdesc.helper_func(FUNCPTR, force_if_necessary)
         rvirtualizable2.replace_promote_virtualizable_with_call(

Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/warmspot.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/warmspot.py	Thu Aug 27 15:21:15 2009
@@ -145,7 +145,7 @@
         if self.jitdriver.virtualizables:
             from pypy.jit.metainterp.virtualizable import VirtualizableInfo
             self.metainterp_sd.virtualizable_info = VirtualizableInfo(self)
-        self.metainterp_sd.generate_bytecode(policy)
+        self.metainterp_sd.generate_bytecode(policy, self.ts)
         self.make_enter_function()
         self.rewrite_can_enter_jit()
         self.rewrite_set_param()
@@ -164,6 +164,11 @@
 
     def set_translator(self, translator):
         self.translator = translator
+        if translator.rtyper.type_system.name == 'lltypesystem':
+            self.ts = LLTypeHelper()
+        else:
+            assert translator.rtyper.type_system.name == 'ootypesystem'
+            self.ts = OOTypeHelper()
         self.gcdescr = gc.get_description(translator.config)
 
     def find_portal(self):
@@ -272,7 +277,7 @@
         annhelper = MixLevelHelperAnnotator(self.translator.rtyper)
         s_result = annotationoftype(rettype)
         RETTYPE = annhelper.rtyper.getrepr(s_result).lowleveltype
-        FUNC, PTR = self.cpu.ts.get_FuncType(self.green_args_spec, RETTYPE)
+        FUNC, PTR = self.ts.get_FuncType(self.green_args_spec, RETTYPE)
         args_s = [annmodel.lltype_to_annotation(ARG) for ARG in FUNC.ARGS]
         graph = annhelper.getgraph(func, args_s, s_result)
         funcptr = annhelper.graph2delayed(graph, FUNC)
@@ -295,9 +300,9 @@
                 self.red_args_types.append(history.getkind(TYPE))
         RESTYPE = graph.getreturnvar().concretetype
         (self.JIT_ENTER_FUNCTYPE,
-         self.PTR_JIT_ENTER_FUNCTYPE) = self.cpu.ts.get_FuncType(ALLARGS, lltype.Void)
+         self.PTR_JIT_ENTER_FUNCTYPE) = self.ts.get_FuncType(ALLARGS, lltype.Void)
         (self.PORTAL_FUNCTYPE,
-         self.PTR_PORTAL_FUNCTYPE) = self.cpu.ts.get_FuncType(ALLARGS, RESTYPE)
+         self.PTR_PORTAL_FUNCTYPE) = self.ts.get_FuncType(ALLARGS, RESTYPE)
         
 
     def rewrite_can_enter_jit(self):
@@ -369,7 +374,7 @@
         # ____________________________________________________________
         # Prepare the portal_runner() helper
         #
-        portal_ptr = self.cpu.ts.functionptr(PORTALFUNC, 'portal',
+        portal_ptr = self.ts.functionptr(PORTALFUNC, 'portal',
                                          graph = portalgraph)
         portalfunc_ARGS = unrolling_iterable(
             [(i, 'arg%d' % i, ARG) for i, ARG in enumerate(PORTALFUNC.ARGS)])
@@ -521,8 +526,8 @@
     def rewrite_set_param(self):
         closures = {}
         graphs = self.translator.graphs
-        _, PTR_SET_PARAM_FUNCTYPE = self.cpu.ts.get_FuncType([lltype.Signed],
-                                                             lltype.Void)
+        _, PTR_SET_PARAM_FUNCTYPE = self.ts.get_FuncType([lltype.Signed],
+                                                         lltype.Void)
         def make_closure(fullfuncname):
             state = self.state
             def closure(i):
@@ -661,9 +666,9 @@
         MAX_HASH_TABLE_BITS = 1
     THRESHOLD_LIMIT = sys.maxint // 2
     #
-    getlength = warmrunnerdesc.cpu.ts.getlength
-    getarrayitem = warmrunnerdesc.cpu.ts.getarrayitem
-    setarrayitem = warmrunnerdesc.cpu.ts.setarrayitem
+    getlength = warmrunnerdesc.ts.getlength
+    getarrayitem = warmrunnerdesc.ts.getarrayitem
+    setarrayitem = warmrunnerdesc.ts.setarrayitem
     #
     rtyper = warmrunnerdesc.translator.rtyper
     can_inline_ptr = warmrunnerdesc.can_inline_ptr

Modified: pypy/branch/pyjitpl5/pypy/jit/tl/spli/test/test_jit.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/tl/spli/test/test_jit.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/tl/spli/test/test_jit.py	Thu Aug 27 15:21:15 2009
@@ -9,6 +9,7 @@
 class TestSPLIJit(JitMixin):
     type_system = 'lltype'
     CPUClass = runner.LLtypeCPU
+    ts = LLTypeHelper()
     
     def interpret(self, f, args):
         coderepr = serializer.serialize(f.func_code)



More information about the Pypy-commit mailing list