public class CytronDominanceFrontier extends java.lang.Object implements DominanceFrontier
| Modifier and Type | Field and Description |
|---|---|
protected DominatorTree |
dt |
protected java.util.Map<DominatorNode,java.util.List<DominatorNode>> |
nodeToFrontier |
| Constructor and Description |
|---|
CytronDominanceFrontier(DominatorTree dt) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
bottomUpDispatch(DominatorNode node)
Make sure we visit children first.
|
java.util.List |
getDominanceFrontierOf(DominatorNode node) |
protected boolean |
isFrontierKnown(DominatorNode node) |
protected void |
processNode(DominatorNode node)
Calculate dominance frontier for a set of basic blocks.
|
protected DominatorTree dt
protected java.util.Map<DominatorNode,java.util.List<DominatorNode>> nodeToFrontier
public CytronDominanceFrontier(DominatorTree dt)
public java.util.List getDominanceFrontierOf(DominatorNode node)
getDominanceFrontierOf in interface DominanceFrontierprotected boolean isFrontierKnown(DominatorNode node)
protected void bottomUpDispatch(DominatorNode node)
protected void processNode(DominatorNode node)
Uses the algorithm of Cytron et al., TOPLAS Oct. 91:
for each X in a bottom-up traversal of the dominator tree do
DF(X) < - null
for each Y in Succ(X) do
if (idom(Y)!=X) then DF(X) <- DF(X) U Y
end
for each Z in {idom(z) = X} do
for each Y in DF(Z) do
if (idom(Y)!=X) then DF(X) <- DF(X) U Y
end
end
Copyright © 2012-2019 RoboVM AB. All Rights Reserved.