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
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
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])
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])