Class IPAPassFlagFunctionsRecompileOnce


  • public class IPAPassFlagFunctionsRecompileOnce
    extends IPAPass
    This rewrite marks functions with loops as recompile once in order to reduce recompilation overhead. Such functions are recompiled on function entry with the size information of the function inputs which is often sufficient to decide upon execution types; in case there are still unknowns, the traditional recompilation per atomic block still applies. TODO call after lops construction
    • Constructor Detail

      • IPAPassFlagFunctionsRecompileOnce

        public IPAPassFlagFunctionsRecompileOnce()
    • Method Detail

      • isApplicable

        public boolean isApplicable​(FunctionCallGraph fgraph)
        Description copied from class: IPAPass
        Indicates if an IPA pass is applicable for the current configuration such as global flags or the chosen execution mode (e.g., HYBRID).
        Specified by:
        isApplicable in class IPAPass
        Parameters:
        fgraph - function call graph
        Returns:
        true if applicable.
      • rewriteProgram

        public boolean rewriteProgram​(DMLProgram prog,
                                      FunctionCallGraph fgraph,
                                      FunctionCallSizeInfo fcallSizes)
        Description copied from class: IPAPass
        Rewrites the given program or its functions in place, with access to the read-only function call graph.
        Specified by:
        rewriteProgram in class IPAPass
        Parameters:
        prog - dml program
        fgraph - function call graph
        fcallSizes - function call size infos
        Returns:
        true if function call graph should be rebuild
      • rFlagFunctionForRecompileOnce

        public boolean rFlagFunctionForRecompileOnce​(StatementBlock sb,
                                                     boolean inLoop)
        Returns true if this statementblock requires recompilation inside a loop statement block.
        Parameters:
        sb - statement block
        inLoop - true if in loop
        Returns:
        true if statement block requires recompilation inside a loop statement block