Class ControlFlowNode
- java.lang.Object
-
- com.strobel.assembler.flowanalysis.ControlFlowNode
-
- All Implemented Interfaces:
java.lang.Comparable<ControlFlowNode>
public final class ControlFlowNode extends java.lang.Object implements java.lang.Comparable<ControlFlowNode>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
ControlFlowNode.InstructionIterator
private class
ControlFlowNode.PredecessorIterator
private class
ControlFlowNode.SuccessorIterator
-
Field Summary
Fields Modifier and Type Field Description private int
_blockIndex
private ControlFlowNode
_copyFrom
private java.util.Set<ControlFlowNode>
_dominanceFrontier
private java.util.List<ControlFlowNode>
_dominatorTreeChildren
private Instruction
_end
private ControlFlowNode
_endFinallyNode
private ExceptionHandler
_exceptionHandler
private ControlFlowNode
_immediateDominator
private java.util.List<ControlFlowEdge>
_incoming
private ControlFlowNodeType
_nodeType
private int
_offset
private java.util.List<ControlFlowEdge>
_outgoing
private Instruction
_start
private java.lang.Object
_userData
private boolean
_visited
static Predicate<ControlFlowNode>
REACHABLE_PREDICATE
-
Constructor Summary
Constructors Constructor Description ControlFlowNode(int blockIndex, int offset, ControlFlowNodeType nodeType)
ControlFlowNode(int blockIndex, ExceptionHandler exceptionHandler, ControlFlowNode endFinallyNode)
ControlFlowNode(int blockIndex, Instruction start, Instruction end)
-
Method Summary
-
-
-
Field Detail
-
_blockIndex
private final int _blockIndex
-
_offset
private final int _offset
-
_nodeType
private final ControlFlowNodeType _nodeType
-
_endFinallyNode
private final ControlFlowNode _endFinallyNode
-
_dominatorTreeChildren
private final java.util.List<ControlFlowNode> _dominatorTreeChildren
-
_dominanceFrontier
private final java.util.Set<ControlFlowNode> _dominanceFrontier
-
_incoming
private final java.util.List<ControlFlowEdge> _incoming
-
_outgoing
private final java.util.List<ControlFlowEdge> _outgoing
-
_visited
private boolean _visited
-
_copyFrom
private ControlFlowNode _copyFrom
-
_immediateDominator
private ControlFlowNode _immediateDominator
-
_start
private Instruction _start
-
_end
private Instruction _end
-
_exceptionHandler
private ExceptionHandler _exceptionHandler
-
_userData
private java.lang.Object _userData
-
REACHABLE_PREDICATE
public static final Predicate<ControlFlowNode> REACHABLE_PREDICATE
-
-
Constructor Detail
-
ControlFlowNode
public ControlFlowNode(int blockIndex, int offset, ControlFlowNodeType nodeType)
-
ControlFlowNode
public ControlFlowNode(int blockIndex, Instruction start, Instruction end)
-
ControlFlowNode
public ControlFlowNode(int blockIndex, ExceptionHandler exceptionHandler, ControlFlowNode endFinallyNode)
-
-
Method Detail
-
getBlockIndex
public final int getBlockIndex()
-
getOffset
public final int getOffset()
-
getNodeType
public final ControlFlowNodeType getNodeType()
-
getEndFinallyNode
public final ControlFlowNode getEndFinallyNode()
-
getDominatorTreeChildren
public final java.util.List<ControlFlowNode> getDominatorTreeChildren()
-
getDominanceFrontier
public final java.util.Set<ControlFlowNode> getDominanceFrontier()
-
getIncoming
public final java.util.List<ControlFlowEdge> getIncoming()
-
getOutgoing
public final java.util.List<ControlFlowEdge> getOutgoing()
-
isVisited
public final boolean isVisited()
-
isReachable
public final boolean isReachable()
-
getCopyFrom
public final ControlFlowNode getCopyFrom()
-
getImmediateDominator
public final ControlFlowNode getImmediateDominator()
-
getStart
public final Instruction getStart()
-
getEnd
public final Instruction getEnd()
-
getExceptionHandler
public final ExceptionHandler getExceptionHandler()
-
getUserData
public final java.lang.Object getUserData()
-
setVisited
public final void setVisited(boolean visited)
-
setCopyFrom
public final void setCopyFrom(ControlFlowNode copyFrom)
-
setImmediateDominator
public final void setImmediateDominator(ControlFlowNode immediateDominator)
-
setStart
public final void setStart(Instruction start)
-
setEnd
public final void setEnd(Instruction end)
-
setExceptionHandler
public final void setExceptionHandler(ExceptionHandler exceptionHandler)
-
setUserData
public final void setUserData(java.lang.Object userData)
-
succeeds
public final boolean succeeds(ControlFlowNode other)
-
precedes
public final boolean precedes(ControlFlowNode other)
-
getPredecessors
public final java.lang.Iterable<ControlFlowNode> getPredecessors()
-
getSuccessors
public final java.lang.Iterable<ControlFlowNode> getSuccessors()
-
getInstructions
public final java.lang.Iterable<Instruction> getInstructions()
-
traversePreOrder
public final void traversePreOrder(Function<ControlFlowNode,java.lang.Iterable<ControlFlowNode>> children, Consumer<ControlFlowNode> visitAction)
-
traversePostOrder
public final void traversePostOrder(Function<ControlFlowNode,java.lang.Iterable<ControlFlowNode>> children, Consumer<ControlFlowNode> visitAction)
-
dominates
public final boolean dominates(ControlFlowNode node)
-
toString
public final java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
compareTo
public int compareTo(ControlFlowNode o)
- Specified by:
compareTo
in interfacejava.lang.Comparable<ControlFlowNode>
-
-