public abstract class HotSpotForeignCallsProviderImpl extends Object implements HotSpotForeignCallsProvider
HotSpotForeignCallsProvider.| Modifier and Type | Field and Description |
|---|---|
protected CodeCacheProvider |
codeCache |
static boolean |
DONT_PREPEND_THREAD |
protected org.graalvm.collections.EconomicMap<ForeignCallSignature,HotSpotForeignCallLinkage> |
foreignCalls |
static HotSpotForeignCallDescriptor |
IDENTITY_HASHCODE |
protected HotSpotJVMCIRuntime |
jvmciRuntime |
static HotSpotForeignCallDescriptor |
LOAD_AND_CLEAR_EXCEPTION |
protected MetaAccessProvider |
metaAccess |
static org.graalvm.word.LocationIdentity[] |
NO_LOCATIONS |
static HotSpotForeignCallDescriptor |
OSR_MIGRATION_END |
static boolean |
PREPEND_THREAD |
protected HotSpotGraalRuntimeProvider |
runtime |
protected org.graalvm.collections.EconomicMap<ForeignCallSignature,HotSpotForeignCallDescriptor> |
signatureMap |
static HotSpotForeignCallDescriptor |
TEST_DEOPTIMIZE_CALL_INT |
static HotSpotForeignCallDescriptor |
VERIFY_OOP |
protected WordTypes |
wordTypes |
| Constructor and Description |
|---|
HotSpotForeignCallsProviderImpl(HotSpotJVMCIRuntime jvmciRuntime,
HotSpotGraalRuntimeProvider runtime,
MetaAccessProvider metaAccess,
CodeCacheProvider codeCache,
WordTypes wordTypes) |
| Modifier and Type | Method and Description |
|---|---|
HotSpotForeignCallDescriptor |
getDescriptor(ForeignCallSignature signature)
Gets the descriptor for a foreign call.
|
HotSpotJVMCIRuntime |
getJVMCIRuntime() |
HotSpotGraalRuntimeProvider |
getRuntime() |
List<Stub> |
getStubs()
Gets the set of stubs linked to by the foreign calls represented by this object.
|
LIRKind |
getValueKind(JavaKind javaKind) |
void |
invokeJavaMethodStub(OptionValues options,
HotSpotProviders providers,
HotSpotForeignCallDescriptor descriptor,
long address,
ResolvedJavaMethod staticMethod) |
void |
linkForeignCall(OptionValues options,
HotSpotProviders providers,
HotSpotForeignCallDescriptor descriptor,
long address,
boolean prependThread)
|
HotSpotForeignCallLinkage |
lookupForeignCall(ForeignCallDescriptor descriptor)
Gets the linkage for a foreign call.
|
HotSpotForeignCallLinkage |
register(HotSpotForeignCallLinkage linkage)
Registers the linkage for a foreign call.
|
HotSpotForeignCallLinkage |
registerForeignCall(HotSpotForeignCallDescriptor descriptor,
long address,
CallingConvention.Type outgoingCcType)
Creates and registers the linkage for a foreign call.
|
HotSpotForeignCallLinkage |
registerStubCall(ForeignCallSignature signature,
HotSpotForeignCallDescriptor.Transition transition,
HotSpotForeignCallDescriptor.Reexecutability reexecutability,
HotSpotForeignCallLinkage.RegisterEffect effect,
org.graalvm.word.LocationIdentity... killedLocations) |
HotSpotForeignCallLinkage |
registerStubCall(HotSpotForeignCallDescriptor descriptor,
HotSpotForeignCallLinkage.RegisterEffect effect)
Creates and registers the details for linking a foreign call to a
Stub. |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetNativeABICallerSaveRegisterslookupForeignCallpublic static final org.graalvm.word.LocationIdentity[] NO_LOCATIONS
public static final HotSpotForeignCallDescriptor OSR_MIGRATION_END
public static final HotSpotForeignCallDescriptor IDENTITY_HASHCODE
public static final HotSpotForeignCallDescriptor VERIFY_OOP
public static final HotSpotForeignCallDescriptor LOAD_AND_CLEAR_EXCEPTION
public static final HotSpotForeignCallDescriptor TEST_DEOPTIMIZE_CALL_INT
protected final HotSpotJVMCIRuntime jvmciRuntime
protected final HotSpotGraalRuntimeProvider runtime
protected final org.graalvm.collections.EconomicMap<ForeignCallSignature,HotSpotForeignCallLinkage> foreignCalls
protected final org.graalvm.collections.EconomicMap<ForeignCallSignature,HotSpotForeignCallDescriptor> signatureMap
protected final MetaAccessProvider metaAccess
protected final CodeCacheProvider codeCache
protected final WordTypes wordTypes
public static final boolean PREPEND_THREAD
public static final boolean DONT_PREPEND_THREAD
public HotSpotForeignCallsProviderImpl(HotSpotJVMCIRuntime jvmciRuntime,
HotSpotGraalRuntimeProvider runtime,
MetaAccessProvider metaAccess,
CodeCacheProvider codeCache,
WordTypes wordTypes)
public HotSpotGraalRuntimeProvider getRuntime()
public HotSpotJVMCIRuntime getJVMCIRuntime()
public HotSpotForeignCallLinkage register(HotSpotForeignCallLinkage linkage)
public HotSpotForeignCallLinkage registerStubCall(HotSpotForeignCallDescriptor descriptor, HotSpotForeignCallLinkage.RegisterEffect effect)
Stub.descriptor - the signature of the call to the stubpublic HotSpotForeignCallLinkage registerStubCall(ForeignCallSignature signature, HotSpotForeignCallDescriptor.Transition transition, HotSpotForeignCallDescriptor.Reexecutability reexecutability, HotSpotForeignCallLinkage.RegisterEffect effect, org.graalvm.word.LocationIdentity... killedLocations)
public HotSpotForeignCallLinkage registerForeignCall(HotSpotForeignCallDescriptor descriptor, long address, CallingConvention.Type outgoingCcType)
HotSpotForeignCallLinkage.RegisterEffect.DESTROYS_ALL_CALLER_SAVE_REGISTERS since they are outside
of Graal's knowledge.descriptor - the signature of the foreign calladdress - the address of the code to call (must be non-zero)outgoingCcType - outgoing (caller) calling convention typepublic void linkForeignCall(OptionValues options, HotSpotProviders providers, HotSpotForeignCallDescriptor descriptor, long address, boolean prependThread)
descriptor - the signature of the call to the stubaddress - the address of the foreign code to callprependThread - true if the JavaThread value for the current thread is to be prepended
to the arguments for the call to addresspublic void invokeJavaMethodStub(OptionValues options, HotSpotProviders providers, HotSpotForeignCallDescriptor descriptor, long address, ResolvedJavaMethod staticMethod)
public HotSpotForeignCallLinkage lookupForeignCall(ForeignCallDescriptor descriptor)
ForeignCallsProviderlookupForeignCall in interface ForeignCallsProviderpublic HotSpotForeignCallDescriptor getDescriptor(ForeignCallSignature signature)
ForeignCallsProvidergetDescriptor in interface ForeignCallsProviderpublic LIRKind getValueKind(JavaKind javaKind)
public List<Stub> getStubs()
HotSpotForeignCallsProvidergetStubs in interface HotSpotForeignCallsProvider