Class ControlFlow
To obtain the control flow graph, do the following:
CtMethod m = ... ControlFlow cf = new ControlFlow(m); Block[] blocks = cf.basicBlocks();
blocks is an array of basic blocks in
that method body.
- Since:
- 3.16
- Author:
- Shigeru Chiba
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBasic block.static classRepresents a catch clause.static classA node of (post) dominator trees. -
Constructor Summary
ConstructorsConstructorDescriptionControlFlow(CtClass ctclazz, MethodInfo minfo) Constructs a control-flow analyzer.ControlFlow(CtMethod method) Constructs a control-flow analyzer for the given method. -
Method Summary
Modifier and TypeMethodDescriptionReturns all the basic blocks in the method body.Constructs a dominator tree.frameAt(int pos) Returns the types of the local variables and stack frame entries available at the given position.Constructs a post dominator tree.
-
Constructor Details
-
ControlFlow
Constructs a control-flow analyzer for the given method.- Throws:
BadBytecode
-
ControlFlow
Constructs a control-flow analyzer.- Throws:
BadBytecode
-
-
Method Details
-
basicBlocks
Returns all the basic blocks in the method body.- Returns:
- an array of basic blocks, the array has length 0 if the method doesn't have code.
-
frameAt
Returns the types of the local variables and stack frame entries available at the given position. If the byte at the position is not the first byte of an instruction, then this method returns null.- Parameters:
pos- the position.- Throws:
BadBytecode
-
dominatorTree
Constructs a dominator tree. This method returns an array of the tree nodes. The first element of the array is the root of the tree.The order of the elements is the same as that of the elements in the
Blockarray returned by thebasicBlocksmethod. If aBlockobject is at the i-th position in theBlockarray, then theNodeobject referring to thatBlockobject is at the i-th position in the array returned by this method. For every array elementnode, its index in the array is equivalent tonode.block().index().- Returns:
- an array of the tree nodes, or null if the method doesn't have code.
- See Also:
-
postDominatorTree
Constructs a post dominator tree. This method returns an array of the tree nodes. Note that the tree has multiple roots. The parent of the root nodes is null.The order of the elements is the same as that of the elements in the
Blockarray returned by thebasicBlocksmethod. If aBlockobject is at the i-th position in theBlockarray, then theNodeobject referring to thatBlockobject is at the i-th position in the array returned by this method. For every array elementnode, its index in the array is equivalent tonode.block().index().- Returns:
- an array of the tree nodes, or null if the method doesn't have code.
- See Also:
-