public class DefaultCodeEmissionOrder<T extends AbstractBlockBase<T>> extends Object implements CodeEmissionOrder<T>
CodeEmissionOrder.ComputationTime| Modifier and Type | Field and Description |
|---|---|
protected int |
originalBlockCount |
protected T |
startBlock |
| Constructor and Description |
|---|
DefaultCodeEmissionOrder(int originalBlockCount,
T startBlock) |
| Modifier and Type | Method and Description |
|---|---|
AbstractBlockBase<?>[] |
computeCodeEmittingOrder(OptionValues options,
CodeEmissionOrder.ComputationTime computationTime)
Computes the block order used for code emission.
|
protected static <T extends AbstractBlockBase<T>> |
skipLoopHeader(AbstractBlockBase<T> block)
Skip the loop header block if the loop consists of more than one block and it has only a
single loop end block in the same loop (not a backedge from a nested loop).
|
protected int originalBlockCount
protected T extends AbstractBlockBase<T> startBlock
public DefaultCodeEmissionOrder(int originalBlockCount,
T startBlock)
public AbstractBlockBase<?>[] computeCodeEmittingOrder(OptionValues options, CodeEmissionOrder.ComputationTime computationTime)
computeCodeEmittingOrder in interface CodeEmissionOrder<T extends AbstractBlockBase<T>>protected static <T extends AbstractBlockBase<T>> boolean skipLoopHeader(AbstractBlockBase<T> block)