|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object joeq.Compiler.BytecodeAnalysis.ControlFlowGraph
public class ControlFlowGraph
Control flow graph for a bytecode stream. The data structure is immutable and corresponds exactly to the underlying bytecodes.
Nested Class Summary | |
---|---|
static interface |
ControlFlowGraph.BasicBlockIterator
|
static class |
ControlFlowGraph.InitialPass
Visitor to perform the initial pass over the bytecode. |
static class |
ControlFlowGraph.RPOBasicBlockIterator
|
Field Summary | |
---|---|
static boolean |
TRACE
|
Method Summary | |
---|---|
void |
addJSRInfo(BasicBlock entry,
BasicBlock exit,
boolean[] locals)
Add info about a JSR subroutine. |
static ControlFlowGraph |
computeCFG(jq_Method method)
Compute and return the control flow graph for the given method. |
BasicBlock |
getBasicBlock(int index)
Returns the basic block with the given number. |
BasicBlock |
getBasicBlockByBytecodeIndex(int index)
Returns the basic block that contains the given bytecode index. |
BasicBlock |
getEntry()
Returns the entry basic block. |
BasicBlock |
getExit()
Returns the exit basic block. |
JSRInfo |
getJSRInfo(BasicBlock b)
Returns the JSR info about the JSR subroutine with the given entry/exit block, or null if there are none. |
int |
getNumberOfBasicBlocks()
Returns the number of basic blocks. |
ControlFlowGraph.RPOBasicBlockIterator |
reversePostOrderIterator()
Returns the basic blocks in reverse post-order. |
ControlFlowGraph.RPOBasicBlockIterator |
reversePostOrderIterator(BasicBlock start_bb)
Returns the basic blocks in reverse post-order starting from the given block. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final boolean TRACE
Method Detail |
---|
public BasicBlock getEntry()
public BasicBlock getExit()
public int getNumberOfBasicBlocks()
public BasicBlock getBasicBlock(int index)
public void addJSRInfo(BasicBlock entry, BasicBlock exit, boolean[] locals)
entry
- entry blockexit
- exit blocklocals
- which locals are modifiedpublic JSRInfo getJSRInfo(BasicBlock b)
public BasicBlock getBasicBlockByBytecodeIndex(int index)
public ControlFlowGraph.RPOBasicBlockIterator reversePostOrderIterator()
public ControlFlowGraph.RPOBasicBlockIterator reversePostOrderIterator(BasicBlock start_bb)
public static ControlFlowGraph computeCFG(jq_Method method)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |