[pypy-svn] r73939 - in pypy/branch/blackhole-improvement/pypy: jit/codewriter/test jit/metainterp jit/metainterp/test rlib rlib/test

arigo at codespeak.net arigo at codespeak.net
Wed Apr 21 15:19:43 CEST 2010


Author: arigo
Date: Wed Apr 21 15:19:40 2010
New Revision: 73939

Added:
   pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_support.py
      - copied, changed from r73937, pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_support.py
Removed:
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_support.py
Modified:
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/codewriter.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/policy.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_basic.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_codewriter.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_pyjitpl.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_recursive.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_warmspot.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmstate.py
   pypy/branch/blackhole-improvement/pypy/rlib/jit.py
   pypy/branch/blackhole-improvement/pypy/rlib/test/test_jit.py
Log:
* fix imports
* kill the deprecated "leave" jit hook


Copied: pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_support.py (from r73937, pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_support.py)
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_support.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_support.py	Wed Apr 21 15:19:40 2010
@@ -1,7 +1,7 @@
 import py
 from pypy.rpython.lltypesystem import lltype
 from pypy.objspace.flow.model import Variable, Constant, SpaceOperation
-from pypy.jit.metainterp.support import decode_builtin_call
+from pypy.jit.codewriter.support import decode_builtin_call
 
 def newconst(x):
     return Constant(x, lltype.typeOf(x))

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/codewriter.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/codewriter.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/codewriter.py	Wed Apr 21 15:19:40 2010
@@ -7,7 +7,8 @@
 from pypy.rlib.objectmodel import we_are_translated
 from pypy.rlib.jit import _we_are_jitted
 from pypy.jit.metainterp.history import Const, getkind, dict_equal_consts
-from pypy.jit.metainterp import heaptracker, support, history
+from pypy.jit.metainterp import heaptracker, history
+from pypy.jit.codewriter import support
 from pypy.tool.udir import udir
 from pypy.translator.simplify import get_funcobj, get_functype
 from pypy.translator.backendopt.canraise import RaiseAnalyzer
@@ -76,16 +77,13 @@
         self.raise_analyzer = None
         self.jitdriver = None
 
-    def find_all_graphs(self, portal_graph, leave_graph,
-                        policy, supports_floats):
+    def find_all_graphs(self, portal_graph, policy, supports_floats):
         from pypy.translator.simplify import get_graph
         def is_candidate(graph):
             return policy.look_inside_graph(graph)
         policy.set_supports_floats(supports_floats)
         
         todo = [portal_graph]
-        if leave_graph is not None:
-            todo.append(leave_graph)        
         self.candidate_graphs = seen = set(todo)
 
         def callers():
@@ -178,15 +176,12 @@
         return graph in self.candidate_graphs
 
 
-    def generate_bytecode(self, metainterp_sd, portal_graph, leave_graph,
+    def generate_bytecode(self, metainterp_sd, portal_graph,
                           portal_runner_ptr):
         self._start(metainterp_sd, portal_runner_ptr)
-        leave_code = None
-        if leave_graph:
-            leave_code = self.make_one_bytecode((leave_graph, None), False)
         portal_code = self.make_portal_bytecode(portal_graph)
 
-        self.metainterp_sd.info_from_codewriter(portal_code, leave_code,
+        self.metainterp_sd.info_from_codewriter(portal_code,
                                                 self.class_sizes,
                                                 self.list_of_addr2name,
                                                 portal_runner_ptr)
@@ -1290,8 +1285,6 @@
         calldescr, non_void_args = self.codewriter.getcalldescr(op.args[0],
                                                                 args,
                                                                 op.result)
-        self.emit('recursion_leave_prep')
-        self.emit_varargs(non_void_args)        
         self.emit('recursive_call')
         self.emit(self.get_position(calldescr))
         self.emit_varargs([op.args[0]] + non_void_args)

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/policy.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/policy.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/policy.py	Wed Apr 21 15:19:40 2010
@@ -1,5 +1,5 @@
 from pypy.translator.simplify import get_funcobj
-from pypy.jit.metainterp import support, history
+from pypy.jit.metainterp import history
 from pypy.rpython.lltypesystem import lltype, rclass
 from pypy.tool.udir import udir
 

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py	Wed Apr 21 15:19:40 2010
@@ -648,19 +648,6 @@
     def opimpl_residual_call_loopinvariant(self, calldescr, varargs):
         return self.execute_varargs(rop.CALL_LOOPINVARIANT, varargs, calldescr, exc=True)
 
-    @arguments("varargs")
-    def opimpl_recursion_leave_prep(self, varargs):
-        warmrunnerstate = self.metainterp.staticdata.state
-        if warmrunnerstate.inlining:
-            num_green_args = self.metainterp.staticdata.num_green_args
-            greenkey = varargs[:num_green_args]
-            if warmrunnerstate.can_inline_callable(greenkey):
-                return False
-        leave_code = self.metainterp.staticdata.leave_code
-        if leave_code is None:
-            return False
-        return self.perform_call(leave_code, varargs)
-        
     @arguments("orgpc", "descr", "varargs")
     def opimpl_recursive_call(self, pc, calldescr, varargs):
         warmrunnerstate = self.metainterp.staticdata.state
@@ -1128,7 +1115,6 @@
         self.jit_starting_line = 'JIT starting (%s)' % backendmodule
 
         self.portal_code = None
-        self.leave_code = None
         self._class_sizes = None
         self._addr2name_keys = []
         self._addr2name_values = []
@@ -1141,10 +1127,9 @@
     def _freeze_(self):
         return True
 
-    def info_from_codewriter(self, portal_code, leave_code, class_sizes,
+    def info_from_codewriter(self, portal_code, class_sizes,
                              list_of_addr2name, portal_runner_ptr):
         self.portal_code = portal_code
-        self.leave_code = leave_code
         self._class_sizes = class_sizes
         self._addr2name_keys   = [key   for key, value in list_of_addr2name]
         self._addr2name_values = [value for key, value in list_of_addr2name]

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_basic.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_basic.py	Wed Apr 21 15:19:40 2010
@@ -4,8 +4,9 @@
 from pypy.rlib.jit import OPTIMIZER_FULL, OPTIMIZER_SIMPLE, loop_invariant
 from pypy.jit.metainterp.warmspot import ll_meta_interp, get_stats
 from pypy.jit.backend.llgraph import runner
-from pypy.jit.metainterp import support, codewriter, pyjitpl, history
+from pypy.jit.metainterp import codewriter, pyjitpl, history
 from pypy.jit.metainterp.policy import JitPolicy, StopAtXPolicy
+from pypy.jit.codewriter import support
 from pypy import conftest
 from pypy.rlib.rarithmetic import ovfcheck
 from pypy.jit.metainterp.typesystem import LLTypeHelper, OOTypeHelper
@@ -93,7 +94,7 @@
         portal_graph = rtyper.annotator.translator.graphs[0]
         cw = codewriter.CodeWriter(rtyper)
         
-        graphs = cw.find_all_graphs(portal_graph, None, JitPolicy(),
+        graphs = cw.find_all_graphs(portal_graph, JitPolicy(),
                                     self.CPUClass.supports_floats)
         cw._start(metainterp.staticdata, None)
         portal_graph.func._jit_unroll_safe_ = True

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_codewriter.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_codewriter.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_codewriter.py	Wed Apr 21 15:19:40 2010
@@ -1,6 +1,7 @@
 import py
 from pypy.rlib import jit
-from pypy.jit.metainterp import support, typesystem
+from pypy.jit.codewriter import support
+from pypy.jit.metainterp import typesystem
 from pypy.jit.metainterp.policy import JitPolicy
 from pypy.jit.metainterp.history import ConstInt
 from pypy.jit.metainterp.codewriter import CodeWriter, BytecodeMaker
@@ -25,7 +26,7 @@
     rtyper = support.annotate(i, [7])
     cw = CodeWriter(rtyper)
     jitpolicy = JitPolicy()
-    res = cw.find_all_graphs(rtyper.annotator.translator.graphs[0], None,
+    res = cw.find_all_graphs(rtyper.annotator.translator.graphs[0],
                              jitpolicy, True)
     translator = rtyper.annotator.translator
 
@@ -41,13 +42,13 @@
     cw = CodeWriter(rtyper)
     jitpolicy = JitPolicy()
     translator = rtyper.annotator.translator
-    res = cw.find_all_graphs(translator.graphs[0], None, jitpolicy,
+    res = cw.find_all_graphs(translator.graphs[0], jitpolicy,
                              supports_floats=True)
     funcs = set([graph.func for graph in res])
     assert funcs == set([f, g])
 
     cw = CodeWriter(rtyper)        
-    res = cw.find_all_graphs(translator.graphs[0], None, jitpolicy,
+    res = cw.find_all_graphs(translator.graphs[0], jitpolicy,
                              supports_floats=False)
     funcs = [graph.func for graph in res]
     assert funcs == [f]
@@ -75,7 +76,7 @@
     cw = CodeWriter(rtyper)
     jitpolicy = JitPolicy()
     translator = rtyper.annotator.translator
-    res = cw.find_all_graphs(translator.graphs[0], None, jitpolicy,
+    res = cw.find_all_graphs(translator.graphs[0], jitpolicy,
                              supports_floats=True)
     funcs = set([graph.func for graph in res])
     assert funcs == set([f, h])
@@ -96,7 +97,7 @@
     cw = CodeWriter(rtyper)
     jitpolicy = JitPolicy()
     translator = rtyper.annotator.translator
-    res = cw.find_all_graphs(translator.graphs[0], None, jitpolicy,
+    res = cw.find_all_graphs(translator.graphs[0], jitpolicy,
                              supports_floats=True)
     funcs = set([graph.func for graph in res])
     assert funcs == set([g, h])
@@ -110,7 +111,7 @@
     jitpolicy = JitPolicy()
     translator = rtyper.annotator.translator
     # does not explode
-    cw.find_all_graphs(translator.graphs[0], None, jitpolicy, True)
+    cw.find_all_graphs(translator.graphs[0], jitpolicy, True)
 
 class SomeLabel(object):
     def __eq__(self, other):

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_pyjitpl.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_pyjitpl.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_pyjitpl.py	Wed Apr 21 15:19:40 2010
@@ -121,7 +121,7 @@
         def __init__(self):
             pass
     metainterp_sd = FakeMetaInterpSd()
-    metainterp_sd.info_from_codewriter(None, None, None,
+    metainterp_sd.info_from_codewriter(None, None,
                                        [(123, "a"), (456, "b")],
                                        None)
     assert metainterp_sd.get_name_from_address(123) == 'a'

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_recursive.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_recursive.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_recursive.py	Wed Apr 21 15:19:40 2010
@@ -494,77 +494,6 @@
         res = self.meta_interp(main, [1], optimizer=OPTIMIZER_SIMPLE, trace_limit=TRACE_LIMIT)
         self.check_loops(call_may_force=0, call=0)
 
-    def test_leave_jit_hook(self):
-        from pypy.rpython.annlowlevel import hlstr
-        def p(code, pc):
-            code = hlstr(code)
-            return "%s %d %s" % (code, pc, code[pc])
-        def c(code, pc):
-            return "L" not in hlstr(code)
-
-        def really_leave(frame):
-            frame.hookcalled = True
-
-        def leave(code, pc, frame):
-            really_leave(frame)
-
-        class ExpectedHook(Exception):
-            pass
-        class UnexpectedHook(Exception):
-            pass
-
-        myjitdriver = JitDriver(greens=['code', 'pc'], reds=['self'],
-                                get_printable_location=p, can_inline=c,
-                                leave=leave)
-        class Frame(object):
-            hookcalled = True
-            
-            def __init__(self, n):
-                self.n = n
-                self.hookcalled = False
-            def f(self, code):
-                pc = 0
-                while pc < len(code):
-
-                    myjitdriver.jit_merge_point(self=self, code=code, pc=pc)
-                    op = code[pc]
-                    if op == "-":
-                        self.n -= 1
-                    elif op == "c":
-                        frame = Frame(self.n)
-                        self.n = frame.f("---i---")
-                        if we_are_jitted():
-                            if frame.hookcalled:
-                                raise UnexpectedHook
-                    elif op == "C":
-                        frame = Frame(self.n)
-                        self.n = frame.f("cL")
-                        if we_are_jitted():
-                            if not frame.hookcalled:
-                                raise ExpectedHook
-                    elif op == "i":
-                        if self.n % 5 == 1:
-                            return self.n
-                    elif op == "l":
-                        if self.n > 0:
-                            myjitdriver.can_enter_jit(self=self, code=code, pc=0)
-                            pc = 0
-                            continue
-                    elif op == "L":
-                        if self.n > 50:
-                            myjitdriver.can_enter_jit(self=self, code=code, pc=0)
-                            pc = 0
-                            continue
-                    else:
-                        assert 0
-                    pc += 1
-                return self.n
-        def main(n):
-            frame = Frame(n)
-            return frame.f("C-l")
-        res = self.meta_interp(main, [100], optimizer=OPTIMIZER_SIMPLE, inline=True)
-        assert res == main(100)
-
     def test_trace_from_start(self):
         def p(code, pc):
             code = hlstr(code)

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_warmspot.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_warmspot.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_warmspot.py	Wed Apr 21 15:19:40 2010
@@ -288,7 +288,7 @@
 class TestWarmspotDirect(object):
     def setup_class(cls):
         from pypy.jit.metainterp.typesystem import llhelper
-        from pypy.jit.metainterp.support import annotate
+        from pypy.jit.codewriter.support import annotate
         from pypy.jit.metainterp.warmspot import WarmRunnerDesc
         from pypy.rpython.lltypesystem.rclass import OBJECT, OBJECT_VTABLE
         from pypy.rpython.lltypesystem import lltype, llmemory

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py	Wed Apr 21 15:19:40 2010
@@ -17,11 +17,12 @@
 from pypy.translator.unsimplify import call_final_function
 
 from pypy.jit.metainterp import codewriter
-from pypy.jit.metainterp import support, history, pyjitpl, gc
+from pypy.jit.metainterp import history, pyjitpl, gc
 from pypy.jit.metainterp.pyjitpl import MetaInterpStaticData, MetaInterp
 from pypy.jit.metainterp.policy import JitPolicy
 from pypy.jit.metainterp.typesystem import LLTypeHelper, OOTypeHelper
 from pypy.jit.metainterp.jitprof import Profiler, EmptyProfiler
+from pypy.jit.codewriter import support
 from pypy.rlib.jit import DEBUG_STEPS, DEBUG_DETAILED, DEBUG_OFF, DEBUG_PROFILE
 
 # ____________________________________________________________
@@ -150,10 +151,8 @@
             policy = JitPolicy()
         self.set_translator(translator)
         self.find_portal()
-        self.make_leave_jit_graph()
         self.codewriter = codewriter.CodeWriter(self.rtyper)
         graphs = self.codewriter.find_all_graphs(self.portal_graph,
-                                                 self.leave_graph,
                                                  policy,
                                                  CPUClass.supports_floats)
         policy.dump_unsafe_loops()
@@ -177,7 +176,6 @@
                 
         self.codewriter.generate_bytecode(self.metainterp_sd,
                                           self.portal_graph,
-                                          self.leave_graph,
                                           self.portal_runner_ptr
                                           )
         self.rewrite_can_enter_jit()
@@ -369,18 +367,6 @@
                 maybe_compile_and_run(*args)
         maybe_enter_from_start._always_inline_ = True
         self.maybe_enter_from_start_fn = maybe_enter_from_start
-
-
-    def make_leave_jit_graph(self):
-        self.leave_graph = None
-        if self.jitdriver.leave:
-            args_s = self.portal_args_s
-            from pypy.annotation import model as annmodel
-            annhelper = MixLevelHelperAnnotator(self.translator.rtyper)
-            s_result = annmodel.s_None
-            self.leave_graph = annhelper.getgraph(self.jitdriver.leave,
-                                                  args_s, s_result)
-            annhelper.finish()
         
     def make_driverhook_graphs(self):
         from pypy.rlib.jit import BaseJitCell

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmstate.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmstate.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmstate.py	Wed Apr 21 15:19:40 2010
@@ -11,7 +11,8 @@
 from pypy.rlib.jit import DEBUG_PROFILE
 from pypy.rlib.jit import BaseJitCell
 from pypy.rlib.debug import debug_start, debug_stop, debug_print
-from pypy.jit.metainterp import support, history
+from pypy.jit.metainterp import history
+from pypy.jit.codewriter import support
 
 # ____________________________________________________________
 

Modified: pypy/branch/blackhole-improvement/pypy/rlib/jit.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/rlib/jit.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/rlib/jit.py	Wed Apr 21 15:19:40 2010
@@ -224,8 +224,7 @@
     def __init__(self, greens=None, reds=None, virtualizables=None,
                  get_jitcell_at=None, set_jitcell_at=None,
                  can_inline=None, get_printable_location=None,
-                 confirm_enter_jit=None,
-                 leave=None):   # XXX 'leave' is deprecated
+                 confirm_enter_jit=None):
         if greens is not None:
             self.greens = greens
         if reds is not None:
@@ -243,7 +242,6 @@
         self.get_printable_location = get_printable_location
         self.can_inline = can_inline
         self.confirm_enter_jit = confirm_enter_jit
-        self.leave = leave
 
     def _freeze_(self):
         return True
@@ -358,7 +356,6 @@
                            **kwds_s)
         self.annotate_hook(driver.can_inline, driver.greens, **kwds_s)
         self.annotate_hook(driver.get_printable_location, driver.greens, **kwds_s)
-        self.annotate_hook(driver.leave, driver.greens + driver.reds, **kwds_s)
 
     def annotate_hook(self, func, variables, args_s=[], **kwds_s):
         if func is None:

Modified: pypy/branch/blackhole-improvement/pypy/rlib/test/test_jit.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/rlib/test/test_jit.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/rlib/test/test_jit.py	Wed Apr 21 15:19:40 2010
@@ -61,12 +61,10 @@
         
         def can_inline(m): pass
         def get_printable_location(m): pass
-        def leave(m, n): pass
         
         myjitdriver = JitDriver(greens=['m'], reds=['n'],
                                 can_inline=can_inline,
-                                get_printable_location=get_printable_location,
-                                leave=leave)
+                                get_printable_location=get_printable_location)
         def fn(n):
             m = 42.5
             while n > 0:
@@ -83,9 +81,6 @@
                     return [v.concretetype for v in graph.getargs()]
             raise Exception, 'function %r has not been annotated' % func
 
-        leave_args = getargs(leave)
-        assert leave_args == [lltype.Float, lltype.Signed]
-
         can_inline_args = getargs(can_inline)
         get_printable_location_args = getargs(get_printable_location)
         assert can_inline_args == get_printable_location_args == [lltype.Float]



More information about the Pypy-commit mailing list