public abstract class LIRPhase<C> extends Object
low-level
phases. Subclasses should be stateless. There will be
one global instance for each phase that is shared for all compilations.Modifier and Type | Class and Description |
---|---|
private static class |
LIRPhase.LIRPhaseStatistics |
static class |
LIRPhase.Options |
Modifier and Type | Field and Description |
---|---|
private DebugMemUseTracker |
memUseTracker
|
private CharSequence |
name |
private static Pattern |
NAME_PATTERN |
private static int |
PHASE_DUMP_LEVEL |
private static ClassValue<LIRPhase.LIRPhaseStatistics> |
statisticsClassValue |
private DebugTimer |
timer
|
Modifier | Constructor and Description |
---|---|
|
LIRPhase() |
protected |
LIRPhase(String name) |
Modifier and Type | Method and Description |
---|---|
<B extends AbstractBlockBase<B>> |
apply(TargetDescription target,
LIRGenerationResult lirGenRes,
List<B> codeEmittingOrder,
List<B> linearScanOrder,
C context) |
<B extends AbstractBlockBase<B>> |
apply(TargetDescription target,
LIRGenerationResult lirGenRes,
List<B> codeEmittingOrder,
List<B> linearScanOrder,
C context,
boolean dumpLIR) |
private static boolean |
assertionsEnabled() |
private static boolean |
checkName(String name) |
protected CharSequence |
createName() |
CharSequence |
getName() |
protected abstract <B extends AbstractBlockBase<B>> |
run(TargetDescription target,
LIRGenerationResult lirGenRes,
List<B> codeEmittingOrder,
List<B> linearScanOrder,
C context) |
private static final int PHASE_DUMP_LEVEL
private CharSequence name
private final DebugTimer timer
private final DebugMemUseTracker memUseTracker
private static final ClassValue<LIRPhase.LIRPhaseStatistics> statisticsClassValue
private static final Pattern NAME_PATTERN
private static boolean assertionsEnabled()
public final <B extends AbstractBlockBase<B>> void apply(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, C context)
public final <B extends AbstractBlockBase<B>> void apply(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, C context, boolean dumpLIR)
protected abstract <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, C context)
protected CharSequence createName()
public final CharSequence getName()