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.
|
Java Source File Name | Type | Comment |
Block.java | Class | Block represents a basic block of code used in control flow
graphs. |
DominanceFrontier.java | Class | DominanceFrontier is used to calculate the dominance frontier
of each node in a control flow graph. |
DominatorTree.java | Class | DominatorTree finds the dominator tree of a FlowGraph.
The algorithm used is Purdum-Moore. |
FlowGraph.java | Class | FlowGraph constructs and represents a Control Flow Graph (CFG) used for
analyzing a method. |
Handler.java | Class | Handler represents a try-catch block. |
ReplaceTarget.java | Class | ReplaceTarget replaces the block that is the target of a
JumpStmt, JsrStmt, RetStmt,
GotoStmt, SwitchStmt, or IfStmt with
another Block. |
Subroutine.java | Class | Subroutine represents a subroutine (target of a jsr instruction) in
java bytecode. |
VerifyCFG.java | Class | VerifyCFG visits the nodes in a control flow graph and verifies that certain
properties of the graph are true. |