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()
CFGVerifier
Collection<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()
,
CFGVerifier
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>> T commonDominatorTyped(T a, T b)