Package EDU.purdue.cs.bloat.cfg


package EDU.purdue.cs.bloat.cfg

Classes to represent a Java method as a control flow graph of basic blocks. A basic block is a sequence of code that is entered only in once place (e.g. the target of a branch statement) and is exited at only one place (e.g. a branch statement). Each basic block consists of an expression tree. There are also classes to represent try-catch blocks, Java subroutines (finally blocks), certain properties of the control flow graph such as its dominator tree, and to visualize a control flow graph.

  • Classes
    Class
    Description
    Block represents a basic block of code used in control flow graphs.
    DominanceFrontier is used to calculate the dominance frontier of each node in a control flow graph.
    DominatorTree finds the dominator tree of a FlowGraph.
    FlowGraph constructs and represents a Control Flow Graph (CFG) used for analyzing a method.
    Handler represents a try-catch block.
    ReplaceTarget replaces the block that is the target of a JumpStmt, JsrStmt, RetStmt, GotoStmt, SwitchStmt, or IfStmt with another Block.
    Subroutine represents a subroutine (target of a jsr instruction) in java bytecode.
    VerifyCFG visits the nodes in a control flow graph and verifies that certain properties of the graph are true.