Author: Armin Rigo <[email protected]>
Branch: jit-counter
Changeset: r67765:f8b0657d3fb4
Date: 2013-10-31 12:01 +0100
http://bitbucket.org/pypy/pypy/changeset/f8b0657d3fb4/

Log:    Fix more tests

diff --git a/rpython/jit/metainterp/test/test_memmgr.py 
b/rpython/jit/metainterp/test/test_memmgr.py
--- a/rpython/jit/metainterp/test/test_memmgr.py
+++ b/rpython/jit/metainterp/test/test_memmgr.py
@@ -15,7 +15,7 @@
 from rpython.jit.metainterp.test.support import LLJitMixin
 from rpython.rlib.jit import JitDriver, dont_look_inside
 from rpython.jit.metainterp.warmspot import get_stats
-from rpython.jit.metainterp.warmstate import JitCell
+from rpython.jit.metainterp.warmstate import BaseJitCell
 from rpython.rlib import rgc
 
 class FakeLoopToken:
@@ -87,15 +87,15 @@
     # these tests to pass. But we dont want it there always since that will
     # make all other tests take forever.
     def setup_class(cls):
-        original_get_procedure_token = JitCell.get_procedure_token
+        original_get_procedure_token = BaseJitCell.get_procedure_token
         def get_procedure_token(self):
             rgc.collect();
             return original_get_procedure_token(self)
-        JitCell.get_procedure_token = get_procedure_token
+        BaseJitCell.get_procedure_token = get_procedure_token
         cls.original_get_procedure_token = original_get_procedure_token
 
     def teardown_class(cls):
-        JitCell.get_procedure_token = cls.original_get_procedure_token
+        BaseJitCell.get_procedure_token = cls.original_get_procedure_token
 
     def test_loop_kept_alive(self):
         myjitdriver = JitDriver(greens=[], reds=['n'])
diff --git a/rpython/jit/metainterp/test/test_warmstate.py 
b/rpython/jit/metainterp/test/test_warmstate.py
--- a/rpython/jit/metainterp/test/test_warmstate.py
+++ b/rpython/jit/metainterp/test/test_warmstate.py
@@ -3,10 +3,10 @@
 from rpython.rtyper.annlowlevel import llhelper
 from rpython.jit.metainterp.warmstate import wrap, unwrap, specialize_value
 from rpython.jit.metainterp.warmstate import equal_whatever, hash_whatever
-from rpython.jit.metainterp.warmstate import WarmEnterState, JitCell
-from rpython.jit.metainterp.warmstate import MODE_HAVE_PROC, MODE_TRACING
+from rpython.jit.metainterp.warmstate import WarmEnterState
 from rpython.jit.metainterp.history import BoxInt, BoxFloat, BoxPtr
 from rpython.jit.metainterp.history import ConstInt, ConstFloat, ConstPtr
+from rpython.jit.metainterp.counter import DeterministicJitCounter
 from rpython.jit.codewriter import longlong
 from rpython.rlib.rarithmetic import r_singlefloat
 
@@ -78,69 +78,6 @@
     interpret(fn, [42], type_system='lltype')
 
 
-def test_make_jitcell_getter_default():
-    class FakeJitDriverSD:
-        _green_args_spec = [lltype.Signed, lltype.Float]
-    state = WarmEnterState(None, FakeJitDriverSD())
-    get_jitcell = state._make_jitcell_getter_default()
-    cell1 = get_jitcell(True, 42, 42.5)
-    assert isinstance(cell1, JitCell)
-    cell2 = get_jitcell(True, 42, 42.5)
-    assert cell1 is cell2
-    cell3 = get_jitcell(True, 41, 42.5)
-    assert get_jitcell(False, 42, 0.25) is None
-    cell4 = get_jitcell(True, 42, 0.25)
-    assert get_jitcell(False, 42, 0.25) is cell4
-    assert cell1 is not cell3 is not cell4 is not cell1
-
-def test_make_jitcell_getter():
-    class FakeJitDriverSD:
-        _green_args_spec = [lltype.Float]
-        _get_jitcell_at_ptr = None
-    state = WarmEnterState(None, FakeJitDriverSD())
-    get_jitcell = state.make_jitcell_getter()
-    cell1 = get_jitcell(True, 1.75)
-    cell2 = get_jitcell(True, 1.75)
-    assert cell1 is cell2
-    assert get_jitcell is state.make_jitcell_getter()
-
-def test_make_jitcell_getter_custom():
-    from rpython.rtyper.typesystem import LowLevelTypeSystem
-    class FakeRTyper:
-        type_system = LowLevelTypeSystem.instance
-    celldict = {}
-    def getter(x, y):
-        return celldict.get((x, y))
-    def setter(newcell, x, y):
-        newcell.x = x
-        newcell.y = y
-        celldict[x, y] = newcell
-    GETTER = lltype.Ptr(lltype.FuncType([lltype.Signed, lltype.Float],
-                                        llmemory.GCREF))
-    SETTER = lltype.Ptr(lltype.FuncType([llmemory.GCREF, lltype.Signed,
-                                         lltype.Float], lltype.Void))
-    class FakeWarmRunnerDesc:
-        rtyper = FakeRTyper()
-        cpu = None
-        memory_manager = None
-    class FakeJitDriverSD:
-        _get_jitcell_at_ptr = llhelper(GETTER, getter)
-        _set_jitcell_at_ptr = llhelper(SETTER, setter)
-    #
-    state = WarmEnterState(FakeWarmRunnerDesc(), FakeJitDriverSD())
-    get_jitcell = state._make_jitcell_getter_custom()
-    cell1 = get_jitcell(True, 5, 42.5)
-    assert isinstance(cell1, JitCell)
-    assert cell1.x == 5
-    assert cell1.y == 42.5
-    cell2 = get_jitcell(True, 5, 42.5)
-    assert cell2 is cell1
-    cell3 = get_jitcell(True, 41, 42.5)
-    assert get_jitcell(False, 42, 0.25) is None
-    cell4 = get_jitcell(True, 42, 0.25)
-    assert get_jitcell(False, 42, 0.25) is cell4
-    assert cell1 is not cell3 is not cell4 is not cell1
-
 def test_make_unwrap_greenkey():
     class FakeJitDriverSD:
         _green_args_spec = [lltype.Signed, lltype.Float]
@@ -150,26 +87,11 @@
     assert greenargs == (42, 42.5)
     assert type(greenargs[0]) is int
 
-def test_attach_unoptimized_bridge_from_interp():
-    class FakeJitDriverSD:
-        _green_args_spec = [lltype.Signed, lltype.Float]
-        _get_jitcell_at_ptr = None
-    state = WarmEnterState(None, FakeJitDriverSD())
-    get_jitcell = state.make_jitcell_getter()
-    class FakeLoopToken(object):
-        invalidated = False
-    looptoken = FakeLoopToken()
-    state.attach_procedure_to_interp([ConstInt(5),
-                                      constfloat(2.25)],
-                                     looptoken)
-    cell1 = get_jitcell(True, 5, 2.25)
-    assert cell1.mode == MODE_HAVE_PROC
-    assert cell1.get_procedure_token() is looptoken
-
 def test_make_jitdriver_callbacks_1():
     class FakeWarmRunnerDesc:
         cpu = None
         memory_manager = None
+        jitcounter = DeterministicJitCounter()
     class FakeJitDriverSD:
         jitdriver = None
         _green_args_spec = [lltype.Signed, lltype.Float]
@@ -199,13 +121,13 @@
         rtyper = None
         cpu = None
         memory_manager = None
+        jitcounter = DeterministicJitCounter()
     class FakeJitDriverSD:
         jitdriver = None
         _green_args_spec = [lltype.Signed, lltype.Float]
         _get_printable_location_ptr = llhelper(GET_LOCATION, get_location)
         _confirm_enter_jit_ptr = None
         _can_never_inline_ptr = None
-        _get_jitcell_at_ptr = None
         _should_unroll_one_iteration_ptr = None
         red_args_types = []
     state = WarmEnterState(FakeWarmRunnerDesc(), FakeJitDriverSD())
@@ -225,13 +147,13 @@
         rtyper = None
         cpu = None
         memory_manager = None
+        jitcounter = DeterministicJitCounter()
     class FakeJitDriverSD:
         jitdriver = None
         _green_args_spec = [lltype.Signed, lltype.Float]
         _get_printable_location_ptr = None
         _confirm_enter_jit_ptr = llhelper(ENTER_JIT, confirm_enter_jit)
         _can_never_inline_ptr = None
-        _get_jitcell_at_ptr = None
         _should_unroll_one_iteration_ptr = None
         red_args_types = []
 
@@ -251,13 +173,13 @@
         rtyper = None
         cpu = None
         memory_manager = None
+        jitcounter = DeterministicJitCounter()
     class FakeJitDriverSD:
         jitdriver = None
         _green_args_spec = [lltype.Signed, lltype.Float]
         _get_printable_location_ptr = None
         _confirm_enter_jit_ptr = None
         _can_never_inline_ptr = llhelper(CAN_NEVER_INLINE, can_never_inline)
-        _get_jitcell_at_ptr = None
         _should_unroll_one_iteration_ptr = None
         red_args_types = []
 
@@ -265,52 +187,3 @@
     state.make_jitdriver_callbacks()
     res = state.can_never_inline(5, 42.5)
     assert res is True
-
-def test_cleanup_jitcell_dict():
-    class FakeJitDriverSD:
-        _green_args_spec = [lltype.Signed]
-    #
-    # Test creating tons of jitcells that remain at 0
-    warmstate = WarmEnterState(None, FakeJitDriverSD())
-    get_jitcell = warmstate._make_jitcell_getter_default()
-    cell1 = get_jitcell(True, -1)
-    assert len(warmstate._jitcell_dict) == 1
-    #
-    for i in range(1, 20005):
-        get_jitcell(True, i)     # should trigger a clean-up at 20001
-        assert len(warmstate._jitcell_dict) == (i % 20000) + 1
-    #
-    # Same test, with one jitcell that has a counter of BASE instead of 0
-    warmstate = WarmEnterState(None, FakeJitDriverSD())
-    get_jitcell = warmstate._make_jitcell_getter_default()
-    cell2 = get_jitcell(True, -2)
-    cell2.counter = BASE = warmstate.THRESHOLD_LIMIT // 2    # 50%
-    #
-    for i in range(0, 20005):
-        get_jitcell(True, i)
-        assert len(warmstate._jitcell_dict) == (i % 19999) + 2
-    #
-    assert cell2 in warmstate._jitcell_dict.values()
-    assert cell2.counter == int(BASE * 0.92)   # decayed once
-    #
-    # Same test, with jitcells that are compiled and freed by the memmgr
-    warmstate = WarmEnterState(None, FakeJitDriverSD())
-    get_jitcell = warmstate._make_jitcell_getter_default()
-    get_jitcell(True, -1)
-    #
-    for i in range(1, 20005):
-        cell = get_jitcell(True, i)
-        cell.mode = MODE_HAVE_PROC
-        cell.wref_procedure_token = None    # or a dead weakref, equivalently
-        assert len(warmstate._jitcell_dict) == (i % 20000) + 1
-    #
-    # Same test, with mode == MODE_TRACING (rare case, kept alive)
-    warmstate = WarmEnterState(None, FakeJitDriverSD())
-    get_jitcell = warmstate._make_jitcell_getter_default()
-    cell = get_jitcell(True, -1)
-    cell.mode = MODE_TRACING
-    #
-    for i in range(1, 20005):
-        cell = get_jitcell(True, i)
-        cell.mode = MODE_TRACING
-        assert len(warmstate._jitcell_dict) == i + 1
diff --git a/rpython/jit/metainterp/warmstate.py 
b/rpython/jit/metainterp/warmstate.py
--- a/rpython/jit/metainterp/warmstate.py
+++ b/rpython/jit/metainterp/warmstate.py
@@ -174,9 +174,10 @@
             self.profiler = None
         # initialize the state with the default values of the
         # parameters specified in rlib/jit.py
-        for name, default_value in PARAMETERS.items():
-            meth = getattr(self, 'set_param_' + name)
-            meth(default_value)
+        if self.warmrunnerdesc is not None:
+            for name, default_value in PARAMETERS.items():
+                meth = getattr(self, 'set_param_' + name)
+                meth(default_value)
 
     def _compute_threshold(self, threshold):
         return self.warmrunnerdesc.jitcounter.compute_threshold(threshold)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to