Exemple #1
0
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.counter = -1
        cell.wref_procedure_token = None  # or a dead weakref, equivalently
        assert len(warmstate._jitcell_dict) == (i % 20000) + 1
    #
    # Same test, with counter == -2 (rare case, kept alive)
    warmstate = WarmEnterState(None, FakeJitDriverSD())
    get_jitcell = warmstate._make_jitcell_getter_default()
    cell = get_jitcell(True, -1)
    cell.counter = -2
    #
    for i in range(1, 20005):
        cell = get_jitcell(True, i)
        cell.counter = -2
        assert len(warmstate._jitcell_dict) == i + 1
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.counter = -1
        cell.wref_procedure_token = None  # or a dead weakref, equivalently
        assert len(warmstate._jitcell_dict) == (i % 20000) + 1
    #
    # Same test, with counter == -2 (rare case, kept alive)
    warmstate = WarmEnterState(None, FakeJitDriverSD())
    get_jitcell = warmstate._make_jitcell_getter_default()
    cell = get_jitcell(True, -1)
    cell.counter = -2
    #
    for i in range(1, 20005):
        cell = get_jitcell(True, i)
        cell.counter = -2
        assert len(warmstate._jitcell_dict) == i + 1
Exemple #3
0
def test_make_jitcell_getter_default():
    class FakeWarmRunnerDesc:
        green_args_spec = [lltype.Signed, lltype.Float]
    class FakeJitCell(BaseJitCell):
        pass
    state = WarmEnterState(FakeWarmRunnerDesc())
    get_jitcell = state._make_jitcell_getter_default(FakeJitCell)
    cell1 = get_jitcell(42, 42.5)
    assert isinstance(cell1, FakeJitCell)
    cell2 = get_jitcell(42, 42.5)
    assert cell1 is cell2
    cell3 = get_jitcell(41, 42.5)
    cell4 = get_jitcell(42, 0.25)
    assert cell1 is not cell3 is not cell4 is not cell1
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
def test_make_jitcell_getter_default():
    class FakeWarmRunnerDesc:
        green_args_spec = [lltype.Signed, lltype.Float]

    class FakeJitCell(BaseJitCell):
        pass

    state = WarmEnterState(FakeWarmRunnerDesc())
    get_jitcell = state._make_jitcell_getter_default(FakeJitCell)
    cell1 = get_jitcell(42, 42.5)
    assert isinstance(cell1, FakeJitCell)
    cell2 = get_jitcell(42, 42.5)
    assert cell1 is cell2
    cell3 = get_jitcell(41, 42.5)
    cell4 = get_jitcell(42, 0.25)
    assert cell1 is not cell3 is not cell4 is not cell1