public class AMD64HotSpotBackend extends HotSpotHostBackend implements LIRGenerationProvider
HotSpotBackend.Options
Backend.CodeInstallationTask, Backend.CodeInstallationTaskFactory
Modifier and Type | Field and Description |
---|---|
static int |
PATCHED_VERIFIED_ENTRY_POINT_INSTRUCTION_SIZE
The size of the instruction used to patch the verified entry point of an nmethod when the
nmethod is made non-entrant or a zombie (e.g.
|
config, DEOPT_BLOB_UNCOMMON_TRAP, DEOPT_BLOB_UNPACK, DEOPT_BLOB_UNPACK_WITH_EXCEPTION_IN_TLS, ENABLE_STACK_RESERVED_ZONE, THROW_DELAYED_STACKOVERFLOW_ERROR
BASE64_DECODE_BLOCK, BASE64_ENCODE_BLOCK, BIGINTEGER_LEFT_SHIFT_WORKER, BIGINTEGER_RIGHT_SHIFT_WORKER, CIPHER_BLOCK_CHAINING_DECRYPT_AESCRYPT, CIPHER_BLOCK_CHAINING_ENCRYPT_AESCRYPT, CONTINUATION_DO_YIELD, COUNTERMODE_IMPL_CRYPT, CRC_TABLE_LOCATION, ELECTRONIC_CODEBOOK_DECRYPT_AESCRYPT, ELECTRONIC_CODEBOOK_ENCRYPT_AESCRYPT, EXCEPTION_HANDLER, EXCEPTION_HANDLER_IN_CALLER, GHASH_PROCESS_BLOCKS, IC_MISS_HANDLER, MD5_IMPL_COMPRESS, MD5_IMPL_COMPRESS_MB, MONTGOMERY_MULTIPLY, MONTGOMERY_SQUARE, MUL_ADD, MULTIPLY_TO_LEN, NEW_ARRAY, NEW_ARRAY_OR_NULL, NEW_INSTANCE, NEW_INSTANCE_OR_NULL, NEW_MULTI_ARRAY, NEW_MULTI_ARRAY_OR_NULL, SHA_IMPL_COMPRESS, SHA_IMPL_COMPRESS_MB, SHA2_IMPL_COMPRESS, SHA2_IMPL_COMPRESS_MB, SHA3_IMPL_COMPRESS, SHA3_IMPL_COMPRESS_MB, SHA5_IMPL_COMPRESS, SHA5_IMPL_COMPRESS_MB, SQUARE_TO_LEN, UNWIND_EXCEPTION_TO_CALLER, UPDATE_BYTES_ADLER32, UPDATE_BYTES_CRC32, UPDATE_BYTES_CRC32C, VM_ERROR
ARITHMETIC_DREM, ARITHMETIC_FREM
Constructor and Description |
---|
AMD64HotSpotBackend(GraalHotSpotVMConfig config,
HotSpotGraalRuntimeProvider runtime,
HotSpotProviders providers) |
Modifier and Type | Method and Description |
---|---|
protected void |
bangStackWithOffset(CompilationResultBuilder crb,
int bangOffset) |
void |
emitCode(CompilationResultBuilder crb,
LIR lir,
ResolvedJavaMethod installedCodeOwner)
Emits the code for a given graph.
|
void |
emitCodeBody(ResolvedJavaMethod installedCodeOwner,
CompilationResultBuilder crb,
LIR lir)
Emits the code which starts at the verified entry point.
|
void |
emitCodePrefix(ResolvedJavaMethod installedCodeOwner,
CompilationResultBuilder crb,
AMD64MacroAssembler asm,
RegisterConfig regConfig)
Emits the code prior to the verified entry point.
|
void |
emitCodeSuffix(ResolvedJavaMethod installedCodeOwner,
CompilationResultBuilder crb,
AMD64MacroAssembler asm,
FrameMap frameMap) |
CompilationResultBuilder |
newCompilationResultBuilder(LIRGenerationResult lirGenRen,
FrameMap frameMap,
CompilationResult compilationResult,
CompilationResultBuilderFactory factory)
Creates the object used to fill in the details of a given compilation result.
|
protected FrameMapBuilder |
newFrameMapBuilder(RegisterConfig registerConfig) |
LIRGeneratorTool |
newLIRGenerator(LIRGenerationResult lirGenRes) |
NodeLIRBuilderTool |
newNodeLIRBuilder(StructuredGraph graph,
LIRGeneratorTool lirGen) |
RegisterAllocationConfig |
newRegisterAllocationConfig(RegisterConfig registerConfig,
String[] allocationRestrictedTo)
Creates a new configuration for register allocation.
|
completeInitialization, emitStackOverflowCheck, makeCallingConvention, newLIRGenerationResult, newReferenceMapBuilder
createCompiledCode, getCompilationIdentifier, getMinDataSectionItemAlignment, getProviders, getRuntime, getSuites, md5ImplCompressMBStub, multiplyToLenStub, profileInstructions, sha2ImplCompressMBStub, sha3ImplCompressMBStub, sha5ImplCompressMBStub, shaImplCompressMBStub, unsafeArraycopy, updateStub
addCodeInstallationTask, addInstalledCode, createDefaultInstalledCode, createInstalledCode, createInstalledCode, createInstalledCode, emitBackEnd, getCodeCache, getConstantReflection, getForeignCalls, getMetaAccess, getTarget, getValueKind, newBlockOrder
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
newLIRGenerationResult
public static final int PATCHED_VERIFIED_ENTRY_POINT_INSTRUCTION_SIZE
public AMD64HotSpotBackend(GraalHotSpotVMConfig config, HotSpotGraalRuntimeProvider runtime, HotSpotProviders providers)
protected FrameMapBuilder newFrameMapBuilder(RegisterConfig registerConfig)
newFrameMapBuilder
in class HotSpotHostBackend
public LIRGeneratorTool newLIRGenerator(LIRGenerationResult lirGenRes)
newLIRGenerator
in interface LIRGenerationProvider
public NodeLIRBuilderTool newNodeLIRBuilder(StructuredGraph graph, LIRGeneratorTool lirGen)
newNodeLIRBuilder
in interface LIRGenerationProvider
protected void bangStackWithOffset(CompilationResultBuilder crb, int bangOffset)
bangStackWithOffset
in class HotSpotHostBackend
public CompilationResultBuilder newCompilationResultBuilder(LIRGenerationResult lirGenRen, FrameMap frameMap, CompilationResult compilationResult, CompilationResultBuilderFactory factory)
LIRGenerationProvider
newCompilationResultBuilder
in interface LIRGenerationProvider
public void emitCode(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod installedCodeOwner)
LIRGenerationProvider
emitCode
in interface LIRGenerationProvider
installedCodeOwner
- the method the compiled code will be associated with once
installed. This argument can be null.public void emitCodePrefix(ResolvedJavaMethod installedCodeOwner, CompilationResultBuilder crb, AMD64MacroAssembler asm, RegisterConfig regConfig)
installedCodeOwner
- see LIRGenerationProvider.emitCode(org.graalvm.compiler.lir.asm.CompilationResultBuilder, org.graalvm.compiler.lir.LIR, ResolvedJavaMethod)
public void emitCodeBody(ResolvedJavaMethod installedCodeOwner, CompilationResultBuilder crb, LIR lir)
installedCodeOwner
- see LIRGenerationProvider.emitCode(org.graalvm.compiler.lir.asm.CompilationResultBuilder, org.graalvm.compiler.lir.LIR, ResolvedJavaMethod)
public void emitCodeSuffix(ResolvedJavaMethod installedCodeOwner, CompilationResultBuilder crb, AMD64MacroAssembler asm, FrameMap frameMap)
installedCodeOwner
- see LIRGenerationProvider.emitCode(org.graalvm.compiler.lir.asm.CompilationResultBuilder, org.graalvm.compiler.lir.LIR, ResolvedJavaMethod)
public RegisterAllocationConfig newRegisterAllocationConfig(RegisterConfig registerConfig, String[] allocationRestrictedTo)
Backend
newRegisterAllocationConfig
in class Backend
allocationRestrictedTo
- if not null
, register allocation will be restricted to
registers whose names appear in this array