public class HotSpotForeignCallLinkageImpl extends HotSpotForeignCallTarget implements HotSpotForeignCallLinkage
HotSpotForeignCallLinkage.RegisterEffect| Modifier and Type | Field and Description |
|---|---|
protected HotSpotForeignCallDescriptor |
descriptor
The descriptor of the call.
|
JUMP_ADDRESS| Constructor and Description |
|---|
HotSpotForeignCallLinkageImpl(HotSpotForeignCallDescriptor descriptor,
long address,
HotSpotForeignCallLinkage.RegisterEffect effect,
CallingConvention outgoingCallingConvention,
CallingConvention incomingCallingConvention) |
| Modifier and Type | Method and Description |
|---|---|
static HotSpotForeignCallLinkage |
create(MetaAccessProvider metaAccess,
CodeCacheProvider codeCache,
WordTypes wordTypes,
HotSpotForeignCallsProvider foreignCalls,
HotSpotForeignCallDescriptor descriptor,
long address,
HotSpotForeignCallLinkage.RegisterEffect effect,
Type outgoingCcType,
Type incomingCcType)
Creates a
HotSpotForeignCallLinkage. |
static CallingConvention |
createCallingConvention(MetaAccessProvider metaAccess,
CodeCacheProvider codeCache,
WordTypes wordTypes,
<any> valueKindFactory,
ForeignCallDescriptor descriptor,
Type ccType)
Gets a calling convention for a given descriptor and call type.
|
boolean |
destroysRegisters()
Determines if the foreign call target destroys all registers.
|
void |
finalizeAddress(Backend backend) |
long |
getAddress() |
HotSpotForeignCallDescriptor |
getDescriptor() |
HotSpotForeignCallLinkage.RegisterEffect |
getEffect() |
CallingConvention |
getIncomingCallingConvention()
Gets the details of where parameters are passed and value(s) are returned from the callee's
perspective.
|
long |
getMaxCallTargetOffset()
Returns the maximum absolute offset of a PC relative call to this stub from any position in
the code cache or -1 when not applicable.
|
CallingConvention |
getOutgoingCallingConvention()
Gets the details of where parameters are passed and value(s) are returned from the caller's
perspective.
|
Stub |
getStub()
Gets the stub, if any, this foreign call links to.
|
String |
getSymbol()
Gets the VM symbol associated with the target address of the call.
|
Value[] |
getTemporaries()
Gets the values used/killed by this foreign call.
|
boolean |
isCompiledStub()
Determines if this is a call to a compiled stub.
|
boolean |
mayContainFP()
Determines if the runtime function or stub might use floating point registers.
|
boolean |
needsClearUpperVectorRegisters()
Returns true if further cleanup on the float registers is needed after performing the foreign
call.
|
boolean |
needsDebugInfo()
Determines if debug info needs to be associated with this call.
|
boolean |
needsJavaFrameAnchor()
Determines if a
JavaFrameAnchor needs to be set up and torn down around this call. |
void |
setCompiledStub(Stub stub) |
String |
toString() |
protected final HotSpotForeignCallDescriptor descriptor
public HotSpotForeignCallLinkageImpl(HotSpotForeignCallDescriptor descriptor, long address, HotSpotForeignCallLinkage.RegisterEffect effect, CallingConvention outgoingCallingConvention, CallingConvention incomingCallingConvention)
public static HotSpotForeignCallLinkage create(MetaAccessProvider metaAccess, CodeCacheProvider codeCache, WordTypes wordTypes, HotSpotForeignCallsProvider foreignCalls, HotSpotForeignCallDescriptor descriptor, long address, HotSpotForeignCallLinkage.RegisterEffect effect, Type outgoingCcType, Type incomingCcType)
HotSpotForeignCallLinkage.descriptor - the descriptor of the calladdress - the address of the code to calleffect - specifies if the call destroys or preserves all registers (apart from
temporaries which are always destroyed)outgoingCcType - outgoing (caller) calling convention typeincomingCcType - incoming (callee) calling convention type (can be null)public static CallingConvention createCallingConvention(MetaAccessProvider metaAccess,
CodeCacheProvider codeCache,
WordTypes wordTypes,
<any> valueKindFactory,
ForeignCallDescriptor descriptor,
Type ccType)
public String toString()
public HotSpotForeignCallLinkage.RegisterEffect getEffect()
getEffect in interface HotSpotForeignCallLinkagepublic CallingConvention getOutgoingCallingConvention()
ForeignCallLinkagegetOutgoingCallingConvention in interface ForeignCallLinkagepublic CallingConvention getIncomingCallingConvention()
ForeignCallLinkagegetIncomingCallingConvention in interface ForeignCallLinkagepublic Value[] getTemporaries()
ForeignCallLinkagegetTemporaries in interface ForeignCallLinkagepublic long getMaxCallTargetOffset()
ForeignCallLinkagegetMaxCallTargetOffset in interface ForeignCallLinkagepublic HotSpotForeignCallDescriptor getDescriptor()
getDescriptor in interface ForeignCallLinkagegetDescriptor in interface HotSpotForeignCallLinkagepublic void setCompiledStub(Stub stub)
setCompiledStub in interface HotSpotForeignCallLinkagepublic boolean isCompiledStub()
isCompiledStub in interface HotSpotForeignCallLinkagepublic Stub getStub()
HotSpotForeignCallLinkagegetStub in interface HotSpotForeignCallLinkagepublic void finalizeAddress(Backend backend)
finalizeAddress in interface HotSpotForeignCallLinkagepublic long getAddress()
getAddress in interface HotSpotForeignCallLinkagepublic boolean destroysRegisters()
ForeignCallLinkagedestroysRegisters in interface ForeignCallLinkagetrue if the register allocator must save all live registers around a call to
this targetpublic boolean needsDebugInfo()
ForeignCallLinkageneedsDebugInfo in interface ForeignCallLinkagepublic boolean mayContainFP()
HotSpotForeignCallLinkagemayContainFP in interface HotSpotForeignCallLinkagepublic boolean needsJavaFrameAnchor()
HotSpotForeignCallLinkageJavaFrameAnchor needs to be set up and torn down around this call.needsJavaFrameAnchor in interface HotSpotForeignCallLinkagepublic String getSymbol()
HotSpotForeignCallLinkagegetSymbol in interface HotSpotForeignCallLinkagepublic boolean needsClearUpperVectorRegisters()
ForeignCallLinkageneedsClearUpperVectorRegisters in interface ForeignCallLinkage