public class SPARCHotSpotBackend extends HotSpotHostBackend
Modifier and Type | Class and Description |
---|---|
class |
SPARCHotSpotBackend.HotSpotFrameContext |
private static class |
SPARCHotSpotBackend.LIRDependencyAccumulator
Accumulates inputs/outputs/temp/alive in a set along we walk back the LIRInstructions and
detects, if there is any overlap.
|
private static class |
SPARCHotSpotBackend.SizeEstimateStatistics |
HotSpotBackend.Options
Modifier and Type | Field and Description |
---|---|
private static SPARCHotSpotBackend.SizeEstimateStatistics |
CONSTANT_ACTUAL_STATS |
private static SPARCHotSpotBackend.SizeEstimateStatistics |
CONSTANT_ESTIMATED_STATS |
DEOPTIMIZATION_HANDLER, pagesToBang, UNCOMMON_TRAP_HANDLER
DECRYPT, DECRYPT_BLOCK, ENCRYPT, ENCRYPT_BLOCK, EXCEPTION_HANDLER, EXCEPTION_HANDLER_IN_CALLER, FETCH_UNROLL_INFO, IC_MISS_HANDLER, NEW_ARRAY, NEW_INSTANCE, NEW_MULTI_ARRAY, UNCOMMON_TRAP, UNPACK_FRAMES, UNWIND_EXCEPTION_TO_CALLER, VM_ERROR
ARITHMETIC_COS, ARITHMETIC_EXP, ARITHMETIC_LOG, ARITHMETIC_LOG10, ARITHMETIC_POW, ARITHMETIC_SIN, ARITHMETIC_TAN
Constructor and Description |
---|
SPARCHotSpotBackend(HotSpotGraalRuntimeProvider runtime,
HotSpotProviders providers) |
Modifier and Type | Method and Description |
---|---|
private static int |
calculateConstantSize(LIR lir) |
private static int |
calculateDataSectionSize(DataSection ds) |
protected Assembler |
createAssembler(FrameMap frameMap)
Creates the assembler used to emit the machine code.
|
void |
emitCode(CompilationResultBuilder crb,
LIR lir,
ResolvedJavaMethod installedCodeOwner)
Emits the code for a given graph.
|
protected static void |
emitStackOverflowCheck(CompilationResultBuilder crb,
int pagesToBang,
boolean afterFrameInit)
Emits code to do stack overflow checking.
|
private static boolean |
leavesRegisterWindow(LIRInstruction inst) |
CompilationResultBuilder |
newCompilationResultBuilder(LIRGenerationResult lirGenRes,
FrameMap frameMap,
CompilationResult compilationResult,
CompilationResultBuilderFactory factory)
Creates the object used to fill in the details of a given compilation result.
|
FrameMap |
newFrameMap(RegisterConfig registerConfig) |
FrameMapBuilder |
newFrameMapBuilder(RegisterConfig registerConfig)
The given registerConfig is optional, in case null is passed the default RegisterConfig from
the CodeCacheProvider will be used.
|
LIRGenerationResult |
newLIRGenerationResult(String compilationUnitName,
LIR lir,
FrameMapBuilder frameMapBuilder,
ResolvedJavaMethod method,
Object stub) |
LIRGeneratorTool |
newLIRGenerator(CallingConvention cc,
LIRGenerationResult lirGenRes) |
NodeLIRBuilderTool |
newNodeLIRBuilder(StructuredGraph graph,
LIRGeneratorTool lirGen) |
RegisterAllocationConfig |
newRegisterAllocationConfig(RegisterConfig registerConfig) |
private static boolean |
registerSizePredictionValidator(CompilationResultBuilder crb)
Registers a verifier which checks if the LIRInstructions estimate of constants size is
greater or equal to the actual one.
|
private static void |
resetDelayedControlTransfers(LIR lir) |
private static void |
stuffDelayedControlTransfers(LIR l)
Fix-up over whole LIR.
|
private static void |
stuffDelayedControlTransfers(LIR l,
AbstractBlockBase<?> block)
Tries to put DelayedControlTransfer instructions and DelayableLIRInstructions together.
|
completeInitialization
gatherDefinedRegisters, getProviders, getRuntime, getStackIntrospection, getSuites, newReferenceMapBuilder, profileInstructions, updateStub
getCodeCache, getConstantReflection, getForeignCalls, getMetaAccess, getTarget, newBytecodeLIRBuilder
private static final SPARCHotSpotBackend.SizeEstimateStatistics CONSTANT_ESTIMATED_STATS
private static final SPARCHotSpotBackend.SizeEstimateStatistics CONSTANT_ACTUAL_STATS
public SPARCHotSpotBackend(HotSpotGraalRuntimeProvider runtime, HotSpotProviders providers)
public FrameMapBuilder newFrameMapBuilder(RegisterConfig registerConfig)
Backend
newFrameMapBuilder
in class Backend
public FrameMap newFrameMap(RegisterConfig registerConfig)
newFrameMap
in class Backend
public LIRGeneratorTool newLIRGenerator(CallingConvention cc, LIRGenerationResult lirGenRes)
newLIRGenerator
in class Backend
public LIRGenerationResult newLIRGenerationResult(String compilationUnitName, LIR lir, FrameMapBuilder frameMapBuilder, ResolvedJavaMethod method, Object stub)
newLIRGenerationResult
in class Backend
public NodeLIRBuilderTool newNodeLIRBuilder(StructuredGraph graph, LIRGeneratorTool lirGen)
newNodeLIRBuilder
in class Backend
protected static void emitStackOverflowCheck(CompilationResultBuilder crb, int pagesToBang, boolean afterFrameInit)
afterFrameInit
- specifies if the stack pointer has already been adjusted to allocate
the current frameprotected Assembler createAssembler(FrameMap frameMap)
Backend
createAssembler
in class Backend
public CompilationResultBuilder newCompilationResultBuilder(LIRGenerationResult lirGenRes, FrameMap frameMap, CompilationResult compilationResult, CompilationResultBuilderFactory factory)
Backend
newCompilationResultBuilder
in class Backend
private static boolean registerSizePredictionValidator(CompilationResultBuilder crb)
private static int calculateDataSectionSize(DataSection ds)
public void emitCode(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod installedCodeOwner)
Backend
private static int calculateConstantSize(LIR lir)
private static void resetDelayedControlTransfers(LIR lir)
private static void stuffDelayedControlTransfers(LIR l)
l
- stuffDelayedControlTransfers(LIR, AbstractBlockBase)
private static void stuffDelayedControlTransfers(LIR l, AbstractBlockBase<?> block)
private static boolean leavesRegisterWindow(LIRInstruction inst)
public RegisterAllocationConfig newRegisterAllocationConfig(RegisterConfig registerConfig)
newRegisterAllocationConfig
in class Backend