public class AMD64HotSpotBackend extends HotSpotHostBackend implements LIRGenerationProvider
HotSpotBackend.OptionsBackend.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_ERRORAESCRYPT_DECRYPTBLOCK, AESCRYPT_ENCRYPTBLOCK, BASE64_DECODE_BLOCK, BASE64_ENCODE_BLOCK, BIGINTEGER_LEFT_SHIFT_WORKER, BIGINTEGER_RIGHT_SHIFT_WORKER, CIPHER_BLOCK_CHAINING_DECRYPT_AESCRYPT, CIPHER_BLOCK_CHAINING_ENCRYPT_AESCRYPT, 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, VECTORIZED_MISMATCH, VM_ERROR, WRONG_METHOD_HANDLERARITHMETIC_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, newReferenceMapBuildercreateCompiledCode, getCompilationIdentifier, getProviders, getRuntime, getSuites, md5ImplCompressMBStub, multiplyToLenStub, profileInstructions, sha2ImplCompressMBStub, sha3ImplCompressMBStub, sha5ImplCompressMBStub, shaImplCompressMBStub, unsafeArraycopy, updateStubaddCodeInstallationTask, addInstalledCode, createDefaultInstalledCode, createInstalledCode, createInstalledCode, createInstalledCode, emitBackEnd, getCodeCache, getConstantReflection, getForeignCalls, getMetaAccess, getTarget, getValueKind, newBlockOrderclone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitnewLIRGenerationResultpublic 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 HotSpotHostBackendpublic LIRGeneratorTool newLIRGenerator(LIRGenerationResult lirGenRes)
newLIRGenerator in interface LIRGenerationProviderpublic NodeLIRBuilderTool newNodeLIRBuilder(StructuredGraph graph, LIRGeneratorTool lirGen)
newNodeLIRBuilder in interface LIRGenerationProviderprotected void bangStackWithOffset(CompilationResultBuilder crb, int bangOffset)
bangStackWithOffset in class HotSpotHostBackendpublic CompilationResultBuilder newCompilationResultBuilder(LIRGenerationResult lirGenRen, FrameMap frameMap, CompilationResult compilationResult, CompilationResultBuilderFactory factory)
LIRGenerationProvidernewCompilationResultBuilder in interface LIRGenerationProviderpublic void emitCode(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod installedCodeOwner)
LIRGenerationProvideremitCode in interface LIRGenerationProviderinstalledCodeOwner - 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)
BackendnewRegisterAllocationConfig in class BackendallocationRestrictedTo - if not null, register allocation will be restricted to
registers whose names appear in this array