public class SPARCSaveRegistersOp extends SPARCLIRInstruction implements StandardOp.SaveRegistersOp
SPARCLIRInstruction.SizeEstimateLIRInstruction.Alive, LIRInstruction.Def, LIRInstruction.OperandFlag, LIRInstruction.OperandMode, LIRInstruction.State, LIRInstruction.Temp, LIRInstruction.Use| Modifier and Type | Field and Description |
|---|---|
static Register |
RETURN_REGISTER_STORAGE |
protected Register[] |
savedRegisters
The registers (potentially) saved by this operation.
|
static SPARCLIRInstruction.SizeEstimate |
SIZE |
protected StackSlotValue[] |
slots
The slots to which the registers are saved.
|
protected boolean |
supportsRemove
Specifies if
remove(Set) should have an effect. |
static LIRInstructionClass<SPARCSaveRegistersOp> |
TYPE |
delayedControlTransferADDRESS_FLAGS, ALLOWED_FLAGS| Constructor and Description |
|---|
SPARCSaveRegistersOp(Register[] savedRegisters,
StackSlotValue[] savedRegisterLocations,
boolean supportsRemove) |
| Modifier and Type | Method and Description |
|---|---|
void |
emitCode(CompilationResultBuilder crb,
SPARCMacroAssembler masm) |
RegisterSaveLayout |
getMap(FrameMap frameMap)
Gets a map from the saved registers saved by this operation to the frame slots in which
they are saved.
|
StackSlotValue[] |
getSlots() |
private static int |
indexForStackSlot(FrameMap frameMap,
StackSlot slot)
Computes the index of a stack slot relative to slot 0.
|
(package private) static int |
prune(Set<Register> toRemove,
Register[] registers) |
int |
remove(Set<Register> doNotSave)
Prunes
doNotSave from the registers saved by this operation. |
boolean |
supportsRemove()
Determines if the
StandardOp.SaveRegistersOp.remove(Set) operation is supported for this object. |
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<SPARCSaveRegistersOp> TYPE
public static final Register RETURN_REGISTER_STORAGE
public static final SPARCLIRInstruction.SizeEstimate SIZE
protected final Register[] savedRegisters
protected final StackSlotValue[] slots
protected final boolean supportsRemove
remove(Set) should have an effect.public SPARCSaveRegistersOp(Register[] savedRegisters, StackSlotValue[] savedRegisterLocations, boolean supportsRemove)
public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm)
emitCode in class SPARCLIRInstructionpublic StackSlotValue[] getSlots()
public boolean supportsRemove()
StandardOp.SaveRegistersOpStandardOp.SaveRegistersOp.remove(Set) operation is supported for this object.supportsRemove in interface StandardOp.SaveRegistersOppublic int remove(Set<Register> doNotSave)
StandardOp.SaveRegistersOpdoNotSave from the registers saved by this operation.remove in interface StandardOp.SaveRegistersOpdoNotSave - registers that should not be saved by this operationpublic RegisterSaveLayout getMap(FrameMap frameMap)
StandardOp.SaveRegistersOpgetMap in interface StandardOp.SaveRegistersOpframeMap - used to convert a
virtual slot to a frame slot indexprivate static int indexForStackSlot(FrameMap frameMap, StackSlot slot)
slot - a stack slot