public class ControlFlow
extends java.lang.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 and 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 and 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 and 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()
Javassist, a Java-bytecode translator toolkit.
Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.