public class SPARCLoadConstantTableBaseOp extends SPARCLIRInstruction
Layout:
+----constant section----+--pad--+---code section--+ |<-------------------_------------------->| ^- Constant section base pointerThe constant section base pointer is placed as such that the lowest offset -4096 points to the start of the constant section.
If the constant section grows beyond 8k size, the immediate addressing cannot be used anymore; in this case absolute addressing (without using the base pointer is used). See also: CodeInstaller::pd_patch_DataSectionReference
SPARCLIRInstruction.SizeEstimate
LIRInstruction.Alive, LIRInstruction.Def, LIRInstruction.OperandFlag, LIRInstruction.OperandMode, LIRInstruction.State, LIRInstruction.Temp, LIRInstruction.Use
Modifier and Type | Field and Description |
---|---|
private AllocatableValue |
base |
private StandardOp.NoOp |
placeHolder |
static SPARCLIRInstruction.SizeEstimate |
SIZE |
static LIRInstructionClass<SPARCLoadConstantTableBaseOp> |
TYPE |
delayedControlTransfer
ADDRESS_FLAGS, ALLOWED_FLAGS
Constructor and Description |
---|
SPARCLoadConstantTableBaseOp(Variable base,
StandardOp.NoOp placeHolder) |
Modifier and Type | Method and Description |
---|---|
void |
emitCode(CompilationResultBuilder crb,
SPARCMacroAssembler masm) |
AllocatableValue |
getResult() |
void |
setAlive(LIR lir,
boolean alive) |
emitCode, estimateSize, leavesRegisterWindow, setDelayedControlTransfer
destroysCallerSavedRegisters, forEachAlive, forEachAlive, forEachInput, forEachInput, forEachOutput, forEachOutput, forEachRegisterHint, forEachRegisterHint, forEachState, forEachState, forEachState, forEachState, forEachTemp, forEachTemp, getLIRInstructionClass, hasOperands, hasState, id, name, setId, toString, toStringWithIdPrefix, verify, visitEachAlive, visitEachAlive, visitEachInput, visitEachInput, visitEachOutput, visitEachOutput, visitEachState, visitEachState, visitEachTemp, visitEachTemp
public static final LIRInstructionClass<SPARCLoadConstantTableBaseOp> TYPE
public static final SPARCLIRInstruction.SizeEstimate SIZE
private final StandardOp.NoOp placeHolder
private AllocatableValue base
public SPARCLoadConstantTableBaseOp(Variable base, StandardOp.NoOp placeHolder)
public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm)
emitCode
in class SPARCLIRInstruction
public AllocatableValue getResult()