Exemplo n.º 1
0
def inline_and_remove(t, graphs, threshold=BIG_THRESHOLD, heuristic=inline.inlining_heuristic):
    callgraph, caller_candidates = find_malloc_removal_candidates(t, graphs)
    log.inlineandremove("found %s malloc removal candidates" % len(caller_candidates))
    if callgraph:
        count = inline.auto_inlining(t, callgraph=callgraph, threshold=threshold, heuristic=heuristic)
        if not count:
            return False
        log.inlineandremove("inlined %d callsites." % (count,))
        count = remove_mallocs(t, caller_candidates.keys())
        return count
    else:
        return False
Exemplo n.º 2
0
def preparation(translator, graphs, threshold=SMALL_THRESHOLD, heuristic=inline.inlining_heuristic):
    count = 0
    inline.auto_inline_graphs(translator, graphs, threshold, heuristic=heuristic)
    count += remove_mallocs(translator, graphs)
    log.inlineandremove("preparation removed %s mallocs in total" % count)
    return count