public class AArch64HotSpotBackend extends HotSpotHostBackend implements LIRGenerationProvider
HotSpotBackend.OptionsBackend.CodeInstallationTask, Backend.CodeInstallationTaskFactoryconfig, 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 |
|---|
AArch64HotSpotBackend(GraalHotSpotVMConfig config,
HotSpotGraalRuntimeProvider runtime,
HotSpotProviders providers) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
bangStackWithOffset(CompilationResultBuilder crb,
int bangOffset) |
InstalledCode |
createInstalledCode(DebugContext debug,
ResolvedJavaMethod method,
CompilationRequest compilationRequest,
CompilationResult compilationResult,
InstalledCode predefinedInstalledCode,
boolean isDefault,
Object[] context)
Installs code based on a given compilation result.
|
void |
emitCode(CompilationResultBuilder crb,
LIR lir,
ResolvedJavaMethod installedCodeOwner)
Emits the code for a given graph.
|
static void |
emitInvalidatePlaceholder(CompilationResultBuilder crb,
AArch64MacroAssembler masm)
Insert a nop at the start of the prolog so we can patch in a branch if we need to invalidate
the method later.
|
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, emitBackEnd, getCodeCache, getConstantReflection, getForeignCalls, getMetaAccess, getTarget, getValueKind, newBlockOrderclone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitnewLIRGenerationResultpublic AArch64HotSpotBackend(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 InstalledCode createInstalledCode(DebugContext debug, ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult, InstalledCode predefinedInstalledCode, boolean isDefault, Object[] context)
BackendcreateInstalledCode in class Backendmethod - the method compiled to produce compiledCode or null if the
input to compResult was not a ResolvedJavaMethodcompilationRequest - the compilation request or nullcompilationResult - the code to be installedpredefinedInstalledCode - a pre-allocated InstalledCode object to use as a
reference to the installed code. If null, a new InstalledCode
object will be created.isDefault - specifies if the installed code should be made the default implementation of
compRequest.getMethod(). The default implementation for a method is the
code executed for standard calls to the method. This argument is ignored if
compRequest == null.context - a custom debug context to use for the code installationpublic 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 static void emitInvalidatePlaceholder(CompilationResultBuilder crb, AArch64MacroAssembler masm)
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