Class DominatorTree
java.lang.Object
de.mirkosertic.bytecoder.core.backend.sequencer.DominatorTree
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Graph
private final Map
<ControlTokenConsumer, ControlTokenConsumer> private final List
<ControlTokenConsumer> private final List
<ControlTokenConsumer> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addToDomSet
(ControlTokenConsumer n, Set<ControlTokenConsumer> domset) private void
private void
computeRPO
(ControlTokenConsumer consumer) private void
computeRPO
(ControlTokenConsumer current, List<ControlTokenConsumer> finished, Set<ControlTokenConsumer> visited) boolean
dominates
(ControlTokenConsumer dominator, ControlTokenConsumer dominated) Check wheter a node dominates another one.getIDom
(ControlTokenConsumer node) getRpo()
private ControlTokenConsumer
void
writeDebugTo
(OutputStream fileOutputStream) void
writeDebugTo
(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
dominator
dominatesdominated
w.r.t to the entry node
-
getStrictDominators
-
immediatelyDominatedNodesOf
-
domSetOf
-
addToDomSet
-
writeDebugTo
-
writeDebugTo
public void writeDebugTo(OutputStream fileOutputStream, ControlTokenConsumer sourceHighlight, Set<ControlTokenConsumer> destHighlight)
-