public interface AbstractControlFlowGraph<T extends AbstractBlockBase<T>>
| Modifier and Type | Field and Description |
|---|---|
static int |
BLOCK_ID_INITIAL |
static int |
BLOCK_ID_VISITED |
| Modifier and Type | Method and Description |
|---|---|
static <T extends AbstractBlockBase<T>> |
calcDominatorRanges(T block) |
static AbstractBlockBase<?> |
commonDominator(AbstractBlockBase<?> a,
AbstractBlockBase<?> b)
Calculates the common dominator of two blocks.
|
static AbstractBlockBase<?> |
commonDominatorHelper(AbstractBlockBase<?> a,
AbstractBlockBase<?> b) |
static AbstractBlockBase<?> |
commonDominatorRaw(AbstractBlockBase<?> a,
AbstractBlockBase<?> b) |
static AbstractBlockBase<?> |
commonDominatorRawSameDepth(AbstractBlockBase<?> a,
AbstractBlockBase<?> b) |
static <T extends AbstractBlockBase<T>> |
commonDominatorTyped(T a,
T b) |
static <T extends AbstractBlockBase<T>> |
computeDominators(AbstractControlFlowGraph<T> cfg)
Computes the dominators of control flow graph.
|
static boolean |
dominates(AbstractBlockBase<?> a,
AbstractBlockBase<?> b)
True if block
a dominates block b. |
List<T> |
getBlocks()
Returns the list blocks contained in this control flow graph.
|
Collection<Loop<T>> |
getLoops() |
T |
getStartBlock() |
static boolean |
isDominatedBy(AbstractBlockBase<?> a,
AbstractBlockBase<?> b)
True if block
a is dominated by block b. |
static boolean |
strictlyDominates(AbstractBlockBase<?> a,
AbstractBlockBase<?> b)
True if block
a dominates block b and a is not identical block to
b. |
static final int BLOCK_ID_INITIAL
static final int BLOCK_ID_VISITED
List<T> getBlocks()
CFGVerifierCollection<Loop<T>> getLoops()
T getStartBlock()
static <T extends AbstractBlockBase<T>> void computeDominators(AbstractControlFlowGraph<T> cfg)
static <T extends AbstractBlockBase<T>> void calcDominatorRanges(T block)
static boolean isDominatedBy(AbstractBlockBase<?> a, AbstractBlockBase<?> b)
a is dominated by block b.static boolean strictlyDominates(AbstractBlockBase<?> a, AbstractBlockBase<?> b)
a dominates block b and a is not identical block to
b.static boolean dominates(AbstractBlockBase<?> a, AbstractBlockBase<?> b)
a dominates block b.static AbstractBlockBase<?> commonDominator(AbstractBlockBase<?> a, AbstractBlockBase<?> b)
getBlocks(),
CFGVerifierstatic AbstractBlockBase<?> commonDominatorHelper(AbstractBlockBase<?> a, AbstractBlockBase<?> b)
static AbstractBlockBase<?> commonDominatorRaw(AbstractBlockBase<?> a, AbstractBlockBase<?> b)
static AbstractBlockBase<?> commonDominatorRawSameDepth(AbstractBlockBase<?> a, AbstractBlockBase<?> b)
static <T extends AbstractBlockBase<T>> T commonDominatorTyped(T a, T b)