Ejemplo n.º 1
0
def optimize_loop(metainterp_sd, old_loop_tokens, loop):
    cpu = metainterp_sd.cpu
    metainterp_sd.logger_noopt.log_loop(loop.inputargs, loop.operations)
    finder = PerfectSpecializationFinder(cpu)
    finder.find_nodes_loop(loop)
    for old_loop_token in old_loop_tokens:
        if equals_specnodes(old_loop_token.specnodes, loop.token.specnodes):
            return old_loop_token
    optimize_loop_1(metainterp_sd, loop)
    return None
Ejemplo n.º 2
0
def _optimize_loop(metainterp_sd, old_loop_tokens, loop):
    cpu = metainterp_sd.cpu
    metainterp_sd.logger_noopt.log_loop(loop.inputargs, loop.operations)
    finder = PerfectSpecializationFinder(cpu)
    finder.find_nodes_loop(loop)
    for old_loop_token in old_loop_tokens:
        if equals_specnodes(old_loop_token.specnodes, loop.token.specnodes):
            return old_loop_token
    optimize_loop_1(metainterp_sd, loop)
    return None
Ejemplo n.º 3
0
def test_equals_specnodes():
    assert equals_specnodes([prebuiltNotSpecNode, prebuiltNotSpecNode],
                            [prebuiltNotSpecNode, prebuiltNotSpecNode])
    vspecnode1 = _get_vspecnode(1)
    vspecnode2 = _get_vspecnode(2)
    assert equals_specnodes([vspecnode1], [vspecnode1])
    assert not equals_specnodes([vspecnode1], [vspecnode2])
    assert not equals_specnodes([vspecnode1], [prebuiltNotSpecNode])
    assert not equals_specnodes([prebuiltNotSpecNode], [vspecnode2])
    aspecnode1 = _get_aspecnode(1)
    aspecnode2 = _get_aspecnode(2)
    assert equals_specnodes([aspecnode2], [aspecnode2])
    assert not equals_specnodes([aspecnode1], [aspecnode2])
    assert not equals_specnodes([aspecnode1], [prebuiltNotSpecNode])
    assert not equals_specnodes([prebuiltNotSpecNode], [aspecnode2])
    sspecnode1 = _get_sspecnode()
    assert equals_specnodes([sspecnode1], [sspecnode1])
    assert not equals_specnodes([sspecnode1], [prebuiltNotSpecNode])
    assert not equals_specnodes([prebuiltNotSpecNode], [sspecnode1])
    #
    foonode = _get_cspecnode('foo')
    barnode = _get_cspecnode('bar')
    assert equals_specnodes([foonode], [foonode])
    assert not equals_specnodes([foonode], [barnode])
    assert not equals_specnodes([foonode], [prebuiltNotSpecNode])
Ejemplo n.º 4
0
def test_equals_specnodes():
    assert equals_specnodes([prebuiltNotSpecNode, prebuiltNotSpecNode],
                            [prebuiltNotSpecNode, prebuiltNotSpecNode])
    vspecnode1 = _get_vspecnode(1)
    vspecnode2 = _get_vspecnode(2)
    assert equals_specnodes([vspecnode1], [vspecnode1])
    assert not equals_specnodes([vspecnode1], [vspecnode2])
    assert not equals_specnodes([vspecnode1], [prebuiltNotSpecNode])
    assert not equals_specnodes([prebuiltNotSpecNode], [vspecnode2])
    aspecnode1 = _get_aspecnode(1)
    aspecnode2 = _get_aspecnode(2)
    assert equals_specnodes([aspecnode2], [aspecnode2])
    assert not equals_specnodes([aspecnode1], [aspecnode2])
    assert not equals_specnodes([aspecnode1], [prebuiltNotSpecNode])
    assert not equals_specnodes([prebuiltNotSpecNode], [aspecnode2])
    sspecnode1 = _get_sspecnode()
    assert equals_specnodes([sspecnode1], [sspecnode1])
    assert not equals_specnodes([sspecnode1], [prebuiltNotSpecNode])
    assert not equals_specnodes([prebuiltNotSpecNode], [sspecnode1])
    #
    foonode = _get_cspecnode('foo')
    barnode = _get_cspecnode('bar')
    assert equals_specnodes([foonode], [foonode])
    assert not equals_specnodes([foonode], [barnode])
    assert not equals_specnodes([foonode], [prebuiltNotSpecNode])