public class AMD64HotSpotLIRGenerator extends AMD64LIRGenerator implements HotSpotLIRGenerator
LIRGenerator.Options, LIRGenerator.VariableProviderLIRGeneratorTool.BlockScope, LIRGeneratorTool.CharsetNameDiagnosticLIRGeneratorTool.ZapRegistersAfterInstruction, DiagnosticLIRGeneratorTool.ZapStackArgumentSpaceBeforeInstructionarithmeticLIRGen| Modifier | Constructor and Description |
|---|---|
protected |
AMD64HotSpotLIRGenerator(HotSpotProviders providers,
GraalHotSpotVMConfig config,
LIRGenerationResult lirGenRes) |
protected |
AMD64HotSpotLIRGenerator(LIRKindTool lirKindTool,
AMD64ArithmeticLIRGenerator arithmeticLIRGen,
MoveFactory moveFactory,
HotSpotProviders providers,
GraalHotSpotVMConfig config,
LIRGenerationResult lirGenRes) |
| Modifier and Type | Method and Description |
|---|---|
protected VirtualStackSlot |
allocateSaveRegisterLocation(Register register)
Allocate a stack slot for saving a register.
|
<I extends LIRInstruction> |
append(I op) |
void |
beforeRegisterAllocation()
Called just before register allocation is performed on the LIR owned by this generator.
|
LIRInstruction |
createBenchmarkCounter(String name,
String group,
Value increment) |
LIRInstruction |
createMultiBenchmarkCounter(String[] names,
String[] groups,
Value[] increments) |
protected AMD64ControlFlow.StrategySwitchOp |
createStrategySwitchOp(SwitchStrategy strategy,
LabelRef[] keyTargets,
LabelRef defaultTarget,
AllocatableValue key,
AllocatableValue temp) |
void |
emitCCall(long address,
CallingConvention nativeCallingConvention,
Value[] args,
int numberOfFloatingPointArguments) |
Value |
emitCompress(Value pointer,
CompressEncoding encoding,
boolean nonNull) |
void |
emitDeoptimize(Value actionAndReason,
Value speculation,
LIRFrameState state) |
void |
emitDeoptimizeCaller(DeoptimizationAction action,
DeoptimizationReason reason)
Emits code that jumps to the deopt blob uncommon_trap entry point with
action and
reason. |
void |
emitDeoptimizeWithExceptionInCaller(Value exception)
Emits code that jumps to the deopt blob unpack_with_exception entry point with
exception. |
Variable |
emitForeignCall(ForeignCallLinkage linkage,
LIRFrameState state,
Value... args) |
protected void |
emitForeignCallOp(ForeignCallLinkage linkage,
Value targetAddress,
Value result,
Value[] arguments,
Value[] temps,
LIRFrameState info)
Emits the single call operation at the heart of generating LIR for a
foreign call.
|
void |
emitNullCheck(Value address,
LIRFrameState state) |
void |
emitPrefetchAllocate(Value address) |
protected void |
emitRestoreRegisters(AMD64SaveRegistersOp save) |
void |
emitReturn(JavaKind kind,
Value input)
Emits a return instruction.
|
protected void |
emitSaveRbp() |
protected AMD64SaveRegistersOp |
emitSaveRegisters(Register[] savedRegisters,
AllocatableValue[] savedRegisterLocations) |
void |
emitTailcall(Value[] args,
Value address)
Emits an operation to make a tail call.
|
Value |
emitTimeStampWithProcid() |
Value |
emitUncompress(Value pointer,
CompressEncoding encoding,
boolean nonNull) |
void |
emitUnwind(Value exception) |
protected int |
getAVX3Threshold()
Return the minimal array size for using AVX3 instructions.
|
VirtualStackSlot |
getLockSlot(int lockDepth)
Gets a stack slot for a lock at a given lock nesting depth.
|
AVXKind.AVXSize |
getMaxVectorSize()
Return the maximum size of vector registers used in SSE/AVX instructions.
|
HotSpotProviders |
getProviders() |
HotSpotLIRGenerationResult |
getResult() |
protected Register[] |
getSaveableRegisters() |
Stub |
getStub()
Gets the
Stub this generator is generating code for or null if a stub is not
being generated. |
boolean |
needOnlyOopMaps()
Determines if only oop maps are required for the code generated from the LIR.
|
void |
setDebugInfoBuilder(HotSpotDebugInfoBuilder debugInfoBuilder) |
asAddressValue, createZapArgumentSpace, createZapRegisters, emitAddress, emitArrayCompareTo, emitArrayCopyWithConversion, emitArrayCopyWithConversion, emitArrayEquals, emitArrayEquals, emitArrayEquals, emitArrayEquals, emitArrayEquals, emitArrayEquals, emitArrayIndexOf, emitArrayRegionCompareTo, emitArrayRegionCompareTo, emitAtomicReadAndAdd, emitAtomicReadAndWrite, emitByteSwap, emitCacheWriteback, emitCacheWritebackSync, emitCalcStringAttributes, emitCompareAndSwapBranch, emitCompareBranch, emitCompareBranchMemory, emitConditionalMove, emitEncodeArray, emitHashTableSwitch, emitHasNegatives, emitIntegerTestBranch, emitIntegerTestMove, emitJump, emitLogicCompareAndSwap, emitMembar, emitOverflowCheckBranch, emitPause, emitRangeTableSwitch, emitSpeculationFence, emitStrategySwitch, emitStringLatin1Inflate, emitStringUTF16Compress, emitValueCompareAndSwap, emitZeroMemory, getRegisterSize, loadNonInlinableConstant, supports, supportsCPUFeature, toRegisterKind, zapValueForKindasAllocatable, attributes, canInlineConstant, createZapRegisters, createZapRegisters, emitBlackhole, emitConstant, emitIncomingValues, emitIndirectForeignCallAddress, emitJavaConstant, emitLoadConstant, emitMove, emitMove, emitMoveConstant, emitReadRegister, emitStrategySwitch, emitWriteRegister, getAddressKind, getArithmetic, getBlockScope, getCodeCache, getCurrentBlock, getForeignCalls, getLIRKind, getLIRKindTool, getMatchScope, getMetaAccess, getMoveFactory, getRegisterConfig, getSpillMoveFactory, getValueKind, hasBlockEnd, mayEmbedConstantLoad, newVariable, resultOperandFor, setSourcePosition, target, zapArgumentSpaceclone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitaddressAsAllocatableInteger, allocateStackMemory, asAllocatable, canInlineConstant, emitAddress, emitArrayCompareTo, emitArrayCopyWithConversion, emitArrayCopyWithConversion, emitArrayEquals, emitArrayEquals, emitArrayEquals, emitArrayEquals, emitArrayEquals, emitArrayEquals, emitArrayIndexOf, emitArrayRegionCompareTo, emitArrayRegionCompareTo, emitAtomicReadAndAdd, emitAtomicReadAndWrite, emitBlackhole, emitByteSwap, emitCacheWriteback, emitCacheWritebackSync, emitCalcStringAttributes, emitConditionalMove, emitConstant, emitConvertNullToZero, emitConvertNullToZero, emitConvertZeroToNull, emitEncodeArray, emitHasNegatives, emitIntegerTestMove, emitJavaConstant, emitJump, emitLoadConstant, emitLogicCompareAndSwap, emitMembar, emitMove, emitMove, emitMoveConstant, emitPause, emitReadCallerStackPointer, emitReadRegister, emitReadReturnAddress, emitSpeculationFence, emitStringLatin1Inflate, emitStringUTF16Compress, emitValueCompareAndSwap, emitWriteRegister, emitZeroMemory, getArithmetic, getCodeCache, getCurrentBlock, getForeignCalls, getLIRKind, getMetaAccess, getMoveFactory, getRegisterConfig, getSpillMoveFactory, mayEmbedConstantLoad, newVariable, target, toRegisterKindcreateZapArgumentSpace, createZapRegisters, createZapRegisters, createZapRegisters, zapArgumentSpaceprotected AMD64HotSpotLIRGenerator(HotSpotProviders providers, GraalHotSpotVMConfig config, LIRGenerationResult lirGenRes)
protected AMD64HotSpotLIRGenerator(LIRKindTool lirKindTool, AMD64ArithmeticLIRGenerator arithmeticLIRGen, MoveFactory moveFactory, HotSpotProviders providers, GraalHotSpotVMConfig config, LIRGenerationResult lirGenRes)
public HotSpotProviders getProviders()
getProviders in interface HotSpotLIRGeneratorgetProviders in interface LIRGeneratorToolgetProviders in class LIRGeneratorpublic AVXKind.AVXSize getMaxVectorSize()
AMD64LIRGeneratorgetMaxVectorSize in interface LIRGeneratorToolgetMaxVectorSize in class AMD64LIRGeneratorprotected int getAVX3Threshold()
AMD64LIRGeneratorgetAVX3Threshold in class AMD64LIRGeneratorprotected void emitSaveRbp()
public <I extends LIRInstruction> I append(I op)
append in interface LIRGeneratorToolappend in class LIRGeneratorpublic VirtualStackSlot getLockSlot(int lockDepth)
HotSpotLIRGeneratorgetLockSlot in interface HotSpotLIRGeneratorpublic void emitReturn(JavaKind kind,
Value input)
LIRGeneratorToolemitReturn in interface LIRGeneratorToolpublic boolean needOnlyOopMaps()
LIRGeneratorneedOnlyOopMaps in class LIRGeneratorprotected void emitForeignCallOp(ForeignCallLinkage linkage, Value targetAddress, Value result, Value[] arguments, Value[] temps, LIRFrameState info)
LIRGeneratoremitForeignCallOp in class AMD64LIRGeneratorprotected AMD64SaveRegistersOp emitSaveRegisters(Register[] savedRegisters, AllocatableValue[] savedRegisterLocations)
savedRegisters - the registers saved by this operation which may be subject to pruningsavedRegisterLocations - the slots to which the registers are savedprotected VirtualStackSlot allocateSaveRegisterLocation(Register register)
protected Register[] getSaveableRegisters()
protected void emitRestoreRegisters(AMD64SaveRegistersOp save)
public Stub getStub()
Stub this generator is generating code for or null if a stub is not
being generated.public HotSpotLIRGenerationResult getResult()
getResult in interface LIRGeneratorToolgetResult in class LIRGeneratorpublic void setDebugInfoBuilder(HotSpotDebugInfoBuilder debugInfoBuilder)
public Variable emitForeignCall(ForeignCallLinkage linkage, LIRFrameState state, Value... args)
emitForeignCall in interface LIRGeneratorToolemitForeignCall in class LIRGeneratorpublic void emitTailcall(Value[] args,
Value address)
HotSpotLIRGeneratoremitTailcall in interface HotSpotLIRGeneratorargs - the arguments of the calladdress - the target address of the callpublic void emitCCall(long address,
CallingConvention nativeCallingConvention,
Value[] args,
int numberOfFloatingPointArguments)
emitCCall in class AMD64LIRGeneratorpublic void emitUnwind(Value exception)
emitUnwind in interface LIRGeneratorToolpublic void emitDeoptimize(Value actionAndReason,
Value speculation,
LIRFrameState state)
emitDeoptimize in interface LIRGeneratorToolpublic void emitDeoptimizeCaller(DeoptimizationAction action,
DeoptimizationReason reason)
HotSpotLIRGeneratoraction and
reason.emitDeoptimizeCaller in interface HotSpotLIRGeneratorpublic void emitDeoptimizeWithExceptionInCaller(Value exception)
HotSpotLIRGeneratorexception.emitDeoptimizeWithExceptionInCaller in interface HotSpotLIRGeneratorpublic void beforeRegisterAllocation()
LIRGeneratorbeforeRegisterAllocation in class LIRGeneratorpublic Value emitCompress(Value pointer,
CompressEncoding encoding,
boolean nonNull)
emitCompress in interface LIRGeneratorToolpublic Value emitUncompress(Value pointer,
CompressEncoding encoding,
boolean nonNull)
emitUncompress in interface LIRGeneratorToolpublic void emitNullCheck(Value address,
LIRFrameState state)
emitNullCheck in interface LIRGeneratorToolemitNullCheck in class AMD64LIRGeneratorpublic LIRInstruction createBenchmarkCounter(String name, String group, Value increment)
createBenchmarkCounter in interface DiagnosticLIRGeneratorToolcreateBenchmarkCounter in class LIRGeneratorpublic LIRInstruction createMultiBenchmarkCounter(String[] names, String[] groups, Value[] increments)
createMultiBenchmarkCounter in interface DiagnosticLIRGeneratorToolcreateMultiBenchmarkCounter in class LIRGeneratorpublic void emitPrefetchAllocate(Value address)
emitPrefetchAllocate in interface LIRGeneratorToolprotected AMD64ControlFlow.StrategySwitchOp createStrategySwitchOp(SwitchStrategy strategy, LabelRef[] keyTargets, LabelRef defaultTarget, AllocatableValue key, AllocatableValue temp)
createStrategySwitchOp in class AMD64LIRGeneratorpublic Value emitTimeStampWithProcid()
emitTimeStampWithProcid in interface LIRGeneratorTool