Interface ControlFlowGraph<I,​T extends IBasicBlock<I>>

    • Method Detail

      • entry

        T entry()
        Return the entry basic block in the CFG
      • exit

        T exit()
        Returns:
        the synthetic exit block for the cfg
      • getCatchBlocks

        BitVector getCatchBlocks()
        Returns:
        the indices of the catch blocks, as a bit vector
      • getBlockForInstruction

        T getBlockForInstruction​(int index)
        Parameters:
        index - an instruction index
        Returns:
        the basic block which contains this instruction.
      • getInstructions

        I[] getInstructions()
        Returns:
        the instructions of this CFG, as an array.
      • getProgramCounter

        int getProgramCounter​(int index)
        TODO: move this into IR?
        Parameters:
        index - an instruction index
        Returns:
        the program counter (bytecode index) corresponding to that instruction
      • getMethod

        IMethod getMethod()
        Returns:
        the Method this CFG represents
      • getExceptionalSuccessors

        List<T> getExceptionalSuccessors​(T b)
        The order of blocks returned must indicate the exception-handling scope. So the first block is the first candidate catch block, and so on. With this invariant one can compute the exceptional control flow for a given exception type.
        Returns:
        the basic blocks which may be reached from b via exceptional control flow
      • getNormalSuccessors

        Collection<T> getNormalSuccessors​(T b)
        The order of blocks returned should be arbitrary but deterministic.
        Returns:
        the basic blocks which may be reached from b via normal control flow
      • getExceptionalPredecessors

        Collection<T> getExceptionalPredecessors​(T b)
        The order of blocks returned should be arbitrary but deterministic.
        Returns:
        the basic blocks from which b may be reached via exceptional control flow
      • getNormalPredecessors

        Collection<T> getNormalPredecessors​(T b)
        The order of blocks returned should be arbitrary but deterministic.
        Returns:
        the basic blocks from which b may be reached via normal control flow