Class DominatorTree
java.lang.Object
de.mirkosertic.bytecoder.core.backend.sequencer.DominatorTree
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Graphprivate final Map<ControlTokenConsumer, ControlTokenConsumer> private final List<ControlTokenConsumer> private final List<ControlTokenConsumer> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddToDomSet(ControlTokenConsumer n, Set<ControlTokenConsumer> domset) private voidprivate voidcomputeRPO(ControlTokenConsumer consumer) private voidcomputeRPO(ControlTokenConsumer current, List<ControlTokenConsumer> finished, Set<ControlTokenConsumer> visited) booleandominates(ControlTokenConsumer dominator, ControlTokenConsumer dominated) Check wheter a node dominates another one.getIDom(ControlTokenConsumer node) getRpo()private ControlTokenConsumervoidwriteDebugTo(OutputStream fileOutputStream) voidwriteDebugTo(OutputStream fileOutputStream, ControlTokenConsumer sourceHighlight, Set<ControlTokenConsumer> destHighlight)
-
Field Details
-
graph
-
preOrder
-
idom
-
rpo
-
-
Constructor Details
-
DominatorTree
-
-
Method Details
-
computeRPO
-
computeRPO
private void computeRPO(ControlTokenConsumer current, List<ControlTokenConsumer> finished, Set<ControlTokenConsumer> visited) -
getPreOrder
-
getRpo
-
computeDominators
private void computeDominators() -
getIDom
-
intersectIDoms
-
dominates
Check wheter a node dominates another one.- Parameters:
dominator-dominated-- Returns:
- true, if
dominatordominatesdominatedw.r.t to the entry node
-
getStrictDominators
-
immediatelyDominatedNodesOf
-
domSetOf
-
addToDomSet
-
writeDebugTo
-
writeDebugTo
public void writeDebugTo(OutputStream fileOutputStream, ControlTokenConsumer sourceHighlight, Set<ControlTokenConsumer> destHighlight)
-