Class ControlFlowGraphBuilder
java.lang.Object
com.strobel.assembler.flowanalysis.ControlFlowGraphBuilder
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ControlFlowNode
private final ControlFlowNode
private final List
<ExceptionHandler> private final boolean[]
private final List
<Instruction> private int
private final List
<ControlFlowNode> private final int[]
private final ControlFlowNode
(package private) boolean
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
ControlFlowGraphBuilder
(List<Instruction> instructions, List<ExceptionHandler> exceptionHandlers) -
Method Summary
Modifier and TypeMethodDescriptionfinal ControlFlowGraph
build()
static ControlFlowGraph
build
(MethodBody methodBody) static ControlFlowGraph
build
(List<Instruction> instructions, List<ExceptionHandler> exceptionHandlers) private void
private static List
<ExceptionHandler> coalesceExceptionHandlers
(List<ExceptionHandler> handlers) private void
private ControlFlowNode
copyFinallySubGraph
(ControlFlowNode start, ControlFlowNode end, ControlFlowNode newEnd) private void
createBranchControlFlow
(ControlFlowNode node, Instruction jump, Instruction target) private ControlFlowEdge
createEdge
(ControlFlowNode fromNode, ControlFlowNode toNode, JumpType type) private ControlFlowEdge
createEdge
(ControlFlowNode fromNode, Instruction toInstruction, JumpType type) private void
private void
private void
private void
createReturnControlFlow
(ControlFlowNode node, Instruction end) private ExceptionHandler
findInnermostExceptionHandler
(int offsetInTryBlock) private ControlFlowNode
findInnermostExceptionHandlerNode
(int offset) private ControlFlowNode
findInnermostFinallyBlock
(int instructionOffset) private ExceptionHandler
findInnermostFinallyHandler
(int offsetInTryBlock) private ControlFlowNode
findInnermostFinallyHandlerNode
(int offset) private ControlFlowNode
findInnermostHandlerBlock
(int instructionOffset) private ControlFlowNode
findInnermostHandlerBlock
(int instructionOffset, boolean finallyOnly) private ControlFlowNode
findNode
(Instruction instruction) private ControlFlowNode
private int
getInstructionIndex
(Instruction instruction) private static boolean
isNarrower
(ExceptionHandler handler, ExceptionHandler anchor) private static boolean
isNarrower
(InstructionBlock block, InstructionBlock anchor) private void
-
Field Details
-
_instructions
-
_exceptionHandlers
-
_nodes
-
_offsets
private final int[] _offsets -
_hasIncomingJumps
private final boolean[] _hasIncomingJumps -
_entryPoint
-
_regularExit
-
_exceptionalExit
-
_nextBlockId
private int _nextBlockId -
copyFinallyBlocks
boolean copyFinallyBlocks
-
-
Constructor Details
-
ControlFlowGraphBuilder
private ControlFlowGraphBuilder(List<Instruction> instructions, List<ExceptionHandler> exceptionHandlers)
-
-
Method Details
-
build
-
build
public static ControlFlowGraph build(List<Instruction> instructions, List<ExceptionHandler> exceptionHandlers) -
build
-
calculateIncomingJumps
private void calculateIncomingJumps() -
createNodes
private void createNodes() -
createRegularControlFlow
private void createRegularControlFlow() -
createExceptionalControlFlow
private void createExceptionalControlFlow() -
createBranchControlFlow
-
createReturnControlFlow
-
transformLeaveEdges
private void transformLeaveEdges() -
copyFinallyBlocksIntoLeaveEdges
private void copyFinallyBlocksIntoLeaveEdges() -
copyFinallySubGraph
private ControlFlowNode copyFinallySubGraph(ControlFlowNode start, ControlFlowNode end, ControlFlowNode newEnd) -
isNarrower
-
isNarrower
-
findParentExceptionHandlerNode
-
findInnermostExceptionHandlerNode
-
findInnermostFinallyHandlerNode
-
getInstructionIndex
-
findNode
-
findInnermostExceptionHandler
-
findInnermostFinallyHandler
-
findInnermostHandlerBlock
-
findInnermostFinallyBlock
-
findInnermostHandlerBlock
-
createEdge
private ControlFlowEdge createEdge(ControlFlowNode fromNode, Instruction toInstruction, JumpType type) -
createEdge
-
coalesceExceptionHandlers
-