public class ControlFlow extends Object
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.
CtMethod
,
ControlFlow.Block
,
Frame
,
Analyzer
Modifier and Type | Class | Description |
---|---|---|
static class |
ControlFlow.Block |
Basic block.
|
static class |
ControlFlow.Catcher |
Represents a catch clause.
|
static class |
ControlFlow.Node |
A node of (post) dominator trees.
|
Constructor | Description |
---|---|
ControlFlow(CtClass ctclazz,
MethodInfo minfo) |
Constructs a control-flow analyzer.
|
ControlFlow(CtMethod method) |
Constructs a control-flow analyzer for the given method.
|
Modifier and Type | Method | Description |
---|---|---|
ControlFlow.Block[] |
basicBlocks() |
Returns all the basic blocks in the method body.
|
ControlFlow.Node[] |
dominatorTree() |
Constructs a dominator tree.
|
Frame |
frameAt(int pos) |
Returns the types of the local variables and stack frame entries
available at the given position.
|
ControlFlow.Node[] |
postDominatorTree() |
Constructs a post dominator tree.
|
public ControlFlow(CtMethod method) throws BadBytecode
BadBytecode
public ControlFlow(CtClass ctclazz, MethodInfo minfo) throws BadBytecode
BadBytecode
public ControlFlow.Block[] basicBlocks()
public Frame frameAt(int pos) throws BadBytecode
pos
- the position.BadBytecode
public ControlFlow.Node[] dominatorTree()
The order of the elements is the same as that
of the elements in the Block
array returned
by the basicBlocks
method. If a Block
object is at the i-th position
in the Block
array, then
the Node
object referring to that
Block
object is at the i-th position in the
array returned by this method.
For every array element node
, its index in the
array is equivalent to node.block().index()
.
ControlFlow.Node.block()
,
ControlFlow.Block.index()
public ControlFlow.Node[] postDominatorTree()
The order of the elements is the same as that
of the elements in the Block
array returned
by the basicBlocks
method. If a Block
object is at the i-th position
in the Block
array, then
the Node
object referring to that
Block
object is at the i-th position in the
array returned by this method.
For every array element node
, its index in the
array is equivalent to node.block().index()
.
ControlFlow.Node.block()
,
ControlFlow.Block.index()
Copyright © 2018 Shigeru Chiba, www.javassist.org. All rights reserved.