public class SPARCLoadConstantTableBaseOp extends SPARCLIRInstruction
Layout:
+----constant section----+--pad--+---code section--+
|<-------------------_------------------->|
^- Constant section base pointer
The 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.SizeEstimateLIRInstruction.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 |
delayedControlTransferADDRESS_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, setDelayedControlTransferdestroysCallerSavedRegisters, 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, visitEachTemppublic 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 SPARCLIRInstructionpublic AllocatableValue getResult()