public class ForeignCallStub extends AbstractForeignCallStub
non-leaf foreign call from
compiled code. A stub is required for such calls as the caller may be scheduled for
deoptimization while the call is in progress. And since these are foreign/runtime calls on slow
paths, we don't want to force the register allocator to spill around the call. As such, this stub
saves and restores all allocatable registers. It also
handles any exceptions raised during the
foreign call.jvmciRuntime, prependThread, target| Constructor and Description |
|---|
ForeignCallStub(OptionValues options,
HotSpotJVMCIRuntime runtime,
HotSpotProviders providers,
long address,
HotSpotForeignCallDescriptor descriptor,
boolean prependThread)
Creates a stub for a call to code at a given address.
|
| Modifier and Type | Method and Description |
|---|---|
protected ValueNode |
createTargetCall(GraphKit kit,
ReadRegisterNode thread) |
protected HotSpotForeignCallDescriptor |
getTargetSignature(HotSpotForeignCallDescriptor descriptor) |
protected boolean |
returnsObject() |
protected boolean |
shouldClearException() |
createParameters, debugScopeContext, getGraph, getInstalledCodeOwner, getTargetLinkagecheckSafeDataReference, createLIRSuites, createSuites, getCode, getCompilationResult, getDestroyedCallerRegisters, getLinkage, getRegisterConfig, getStubCompilationId, initDestroyedCallerRegisters, shouldSaveRegistersAroundCalls, toStringpublic ForeignCallStub(OptionValues options, HotSpotJVMCIRuntime runtime, HotSpotProviders providers, long address, HotSpotForeignCallDescriptor descriptor, boolean prependThread)
address - the address of the code to calldescriptor - the signature of the call to this stubprependThread - true if the JavaThread value for the current thread is to be prepended
to the arguments for the call to addressprotected HotSpotForeignCallDescriptor getTargetSignature(HotSpotForeignCallDescriptor descriptor)
getTargetSignature in class AbstractForeignCallStubprotected boolean returnsObject()
returnsObject in class AbstractForeignCallStubprotected boolean shouldClearException()
shouldClearException in class AbstractForeignCallStubprotected ValueNode createTargetCall(GraphKit kit, ReadRegisterNode thread)
createTargetCall in class AbstractForeignCallStub