public abstract class LIRInstruction extends Object
LIRInstruction
.Modifier and Type | Class and Description |
---|---|
static interface |
LIRInstruction.Alive |
static interface |
LIRInstruction.Def |
static class |
LIRInstruction.OperandFlag
Flags for an operand.
|
static class |
LIRInstruction.OperandMode
Constants denoting how a LIR instruction uses an operand.
|
static interface |
LIRInstruction.State |
static interface |
LIRInstruction.Temp |
static interface |
LIRInstruction.Use |
Modifier and Type | Field and Description |
---|---|
protected static EnumSet<LIRInstruction.OperandFlag> |
ADDRESS_FLAGS
The flags of the base and index value of an address.
|
protected static EnumMap<LIRInstruction.OperandMode,EnumSet<LIRInstruction.OperandFlag>> |
ALLOWED_FLAGS
For validity checking of the operand flags defined by instruction subclasses.
|
private int |
id
Instruction id for register allocation.
|
private LIRInstructionClass<?> |
instructionClass |
private static DebugMetric |
LIR_NODE_COUNT |
Constructor and Description |
---|
LIRInstruction(LIRInstructionClass<? extends LIRInstruction> c)
Constructs a new LIR instruction.
|
protected static final EnumMap<LIRInstruction.OperandMode,EnumSet<LIRInstruction.OperandFlag>> ALLOWED_FLAGS
protected static final EnumSet<LIRInstruction.OperandFlag> ADDRESS_FLAGS
private final LIRInstructionClass<?> instructionClass
private int id
private static final DebugMetric LIR_NODE_COUNT
public LIRInstruction(LIRInstructionClass<? extends LIRInstruction> c)
public abstract void emitCode(CompilationResultBuilder crb)
public final int id()
public final void setId(int id)
public final boolean hasOperands()
public final boolean hasState()
public boolean destroysCallerSavedRegisters()
public final void forEachInput(InstructionValueProcedure proc)
public final void forEachAlive(InstructionValueProcedure proc)
public final void forEachTemp(InstructionValueProcedure proc)
public final void forEachOutput(InstructionValueProcedure proc)
public final void forEachState(InstructionValueProcedure proc)
public final void forEachInput(ValueProcedure proc)
public final void forEachAlive(ValueProcedure proc)
public final void forEachTemp(ValueProcedure proc)
public final void forEachOutput(ValueProcedure proc)
public final void forEachState(ValueProcedure proc)
public final void forEachState(InstructionStateProcedure proc)
public final void forEachState(StateProcedure proc)
public final void visitEachInput(InstructionValueConsumer proc)
public final void visitEachAlive(InstructionValueConsumer proc)
public final void visitEachTemp(InstructionValueConsumer proc)
public final void visitEachOutput(InstructionValueConsumer proc)
public final void visitEachState(InstructionValueConsumer proc)
public final void visitEachInput(ValueConsumer proc)
public final void visitEachAlive(ValueConsumer proc)
public final void visitEachTemp(ValueConsumer proc)
public final void visitEachOutput(ValueConsumer proc)
public final void visitEachState(ValueConsumer proc)
public final Value forEachRegisterHint(Value value, LIRInstruction.OperandMode mode, InstructionValueProcedure proc)
public final Value forEachRegisterHint(Value value, LIRInstruction.OperandMode mode, ValueProcedure proc)
public void verify()
public final String toStringWithIdPrefix()
public LIRInstructionClass<?> getLIRInstructionClass()