public class AArch64HotSpotLIRGenerator extends AArch64LIRGenerator implements HotSpotLIRGenerator
LIRGenerator.Options, LIRGenerator.VariableProviderLIRGeneratorTool.BlockScope, LIRGeneratorTool.CharsetNameDiagnosticLIRGeneratorTool.ZapRegistersAfterInstruction, DiagnosticLIRGeneratorTool.ZapStackArgumentSpaceBeforeInstructionarithmeticLIRGen| Modifier | Constructor and Description |
|---|---|
protected |
AArch64HotSpotLIRGenerator(HotSpotProviders providers,
GraalHotSpotVMConfig config,
LIRGenerationResult lirGenRes) |
protected |
AArch64HotSpotLIRGenerator(LIRKindTool lirKindTool,
AArch64ArithmeticLIRGenerator 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.
|
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 AArch64ControlFlow.StrategySwitchOp |
createStrategySwitchOp(SwitchStrategy strategy,
LabelRef[] keyTargets,
LabelRef defaultTarget,
AllocatableValue key,
Function<Condition,AArch64Assembler.ConditionFlag> converter) |
void |
emitCCall(long address,
CallingConvention nativeCallingConvention,
Value[] args) |
Value |
emitCompress(Value pointer,
CompressEncoding encoding,
boolean nonNull) |
void |
emitDeoptimize(Value actionAndReason,
Value failedSpeculation,
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(AArch64SaveRegistersOp save) |
void |
emitReturn(JavaKind kind,
Value input)
Emits a return instruction.
|
protected AArch64SaveRegistersOp |
emitSaveRegisters(Register[] savedRegisters,
AllocatableValue[] savedRegisterLocations) |
void |
emitTailcall(Value[] args,
Value address)
Emits an operation to make a tail call.
|
Value |
emitUncompress(Value pointer,
CompressEncoding encoding,
boolean nonNull) |
void |
emitUnwind(Value exception) |
void |
emitZeroMemory(Value address,
Value length,
boolean isAligned) |
protected Value |
getCompareValueForConstantPointer(Value v)
Returns the appropriate value to use within a comparison if the value is a pointer constant;
if not, returns the original value.
|
VirtualStackSlot |
getLockSlot(int lockDepth)
Gets a stack slot for a lock at a given lock nesting depth.
|
HotSpotProviders |
getProviders() |
HotSpotLIRGenerationResult |
getResult() |
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, emitArrayEquals, emitArrayEquals, emitArrayIndexOf, emitAtomicReadAndAdd, emitAtomicReadAndWrite, emitByteSwap, emitCacheWriteback, emitCacheWritebackSync, emitCompare, emitCompareBranch, emitConditionalMove, emitEncodeArray, emitHashTableSwitch, emitIntegerTestBranch, emitIntegerTestMove, emitJump, emitLogicCompareAndSwap, emitMembar, emitOverflowCheckBranch, emitPause, emitRangeTableSwitch, emitSpeculationFence, emitStrategySwitch, emitStringLatin1Inflate, emitStringUTF16Compress, emitValueCompareAndSwap, emitZeroMemory, moveSp, toRegisterKind, zapValueForKindappend, asAllocatable, 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, append, 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, emitTimeStampWithProcid, emitValueCompareAndSwap, emitWriteRegister, getArithmetic, getCodeCache, getCurrentBlock, getForeignCalls, getLIRKind, getMaxVectorSize, getMetaAccess, getMoveFactory, getRegisterConfig, getSpillMoveFactory, mayEmbedConstantLoad, newVariable, target, toRegisterKindcreateZapArgumentSpace, createZapRegisters, createZapRegisters, createZapRegisters, zapArgumentSpaceprotected AArch64HotSpotLIRGenerator(HotSpotProviders providers, GraalHotSpotVMConfig config, LIRGenerationResult lirGenRes)
protected AArch64HotSpotLIRGenerator(LIRKindTool lirKindTool, AArch64ArithmeticLIRGenerator arithmeticLIRGen, MoveFactory moveFactory, HotSpotProviders providers, GraalHotSpotVMConfig config, LIRGenerationResult lirGenRes)
public HotSpotProviders getProviders()
getProviders in interface HotSpotLIRGeneratorgetProviders in interface LIRGeneratorToolgetProviders in class LIRGeneratorpublic boolean needOnlyOopMaps()
LIRGeneratorneedOnlyOopMaps in class LIRGeneratorprotected Value getCompareValueForConstantPointer(Value v)
AArch64LIRGeneratorgetCompareValueForConstantPointer in class AArch64LIRGeneratorprotected void emitForeignCallOp(ForeignCallLinkage linkage, Value targetAddress, Value result, Value[] arguments, Value[] temps, LIRFrameState info)
LIRGeneratoremitForeignCallOp 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)
emitCCall in class AArch64LIRGeneratorprotected AArch64SaveRegistersOp 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 void emitRestoreRegisters(AArch64SaveRegistersOp save)
public VirtualStackSlot getLockSlot(int lockDepth)
HotSpotLIRGeneratorgetLockSlot in interface HotSpotLIRGeneratorpublic 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 AArch64LIRGeneratorpublic 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 LIRGeneratorToolpublic void beforeRegisterAllocation()
LIRGeneratorbeforeRegisterAllocation in class LIRGeneratorpublic Variable emitForeignCall(ForeignCallLinkage linkage, LIRFrameState state, Value... args)
emitForeignCall in interface LIRGeneratorToolemitForeignCall in class LIRGeneratorpublic void emitDeoptimizeCaller(DeoptimizationAction action,
DeoptimizationReason reason)
HotSpotLIRGeneratoraction and
reason.emitDeoptimizeCaller in interface HotSpotLIRGeneratorpublic void emitDeoptimizeWithExceptionInCaller(Value exception)
HotSpotLIRGeneratorexception.emitDeoptimizeWithExceptionInCaller in interface HotSpotLIRGeneratorpublic void emitDeoptimize(Value actionAndReason,
Value failedSpeculation,
LIRFrameState state)
emitDeoptimize in interface LIRGeneratorToolpublic void emitUnwind(Value exception)
emitUnwind in interface LIRGeneratorToolpublic void emitReturn(JavaKind kind,
Value input)
LIRGeneratorToolemitReturn in interface LIRGeneratorToolpublic 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 LIRGeneratorprotected AArch64ControlFlow.StrategySwitchOp createStrategySwitchOp(SwitchStrategy strategy, LabelRef[] keyTargets, LabelRef defaultTarget, AllocatableValue key, Function<Condition,AArch64Assembler.ConditionFlag> converter)
createStrategySwitchOp in class AArch64LIRGeneratorpublic void setDebugInfoBuilder(HotSpotDebugInfoBuilder debugInfoBuilder)
public void emitZeroMemory(Value address,
Value length,
boolean isAligned)
emitZeroMemory in interface LIRGeneratorToolemitZeroMemory in class AArch64LIRGenerator