- java.lang.Object
-
- java.lang.invoke.CallSite
-
- java.lang.invoke.MutableCallSite
-
- jdk.dynalink.support.AbstractRelinkableCallSite
-
- jdk.dynalink.support.SimpleRelinkableCallSite
-
- All Implemented Interfaces:
-
RelinkableCallSite
public class SimpleRelinkableCallSite extends AbstractRelinkableCallSite
一个可重新链接的调用站点,实现单态内联缓存策略,只能在任何给定时间链接到单个GuardedInvocation
。 如果单次调用的保护失败,或者其切换点无效,或者其无效异常被触发,则呼叫站点将丢弃它,并请求其关联的DynamicLinker
重新链接它。
-
-
构造方法摘要
构造方法 Constructor 描述 SimpleRelinkableCallSite(CallSiteDescriptor descriptor)
创建一个具有单一内联缓存策略的新呼叫站点。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
relink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
每次呼叫站点重新链接时,动态链接器都会调用此方法(但是有关异常,请参阅RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)
)。void
resetAndRelink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
每次调用站点重新链接时,动态链接器都会调用此方法 ,并且链接器希望调用站点丢弃任何先前的链接状态(即它与RelinkableCallSite.relink(GuardedInvocation, MethodHandle)
的区别 )。-
Methods inherited from class jdk.dynalink.support.AbstractRelinkableCallSite
getDescriptor, initialize
-
Methods inherited from class java.lang.invoke.MutableCallSite
dynamicInvoker, getTarget, setTarget, syncAll
-
-
-
-
构造方法详细信息
-
SimpleRelinkableCallSite
public SimpleRelinkableCallSite(CallSiteDescriptor descriptor)
创建一个具有单一内联缓存策略的新呼叫站点。- 参数
-
descriptor
- 此呼叫站点的描述符
-
-
方法详细信息
-
relink
public void relink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
说明从接口RelinkableCallSite
复制每次调用站点重新链接时,动态链接器都会调用此方法(但是有关异常,请参阅RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)
)。 它将通过一个GuardedInvocation
,呼叫站点应该并入其目标方法句柄。 当调用此方法时,允许调用站点保持其他无效的调用,以实现多态内联缓存,并通过此调用组合它们以形成其最终目标。- 参数
-
guardedInvocation
- 呼叫站点应纳入其目标方法句柄的守卫调用。 -
relinkAndInvoke
- 一个重新链接和调用方法句柄。 这是一个匹配DynamicLinker
作为回调提供的呼叫站点的方法类型的方法句柄。 当该调用站点无法使用传递的参数调用其目标时,应将其用作最终的后备程序。 回退方法是这样的,当它被调用时,它将尝试为调用获得足够的目标GuardedInvocation
,然后调用RelinkableCallSite.relink(GuardedInvocation, MethodHandle)
或RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)
,最后调用目标。
-
resetAndRelink
public void resetAndRelink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
描述从接口RelinkableCallSite
复制每次调用站点重新链接时,动态链接器将调用此方法,并且链接器希望调用站点丢弃任何先前的链接状态(即它与RelinkableCallSite.relink(GuardedInvocation, MethodHandle)
的区别 )。 它将通过一个GuardedInvocation
,呼叫站点应该使用它来构建其新的目标方法句柄。 当调用此方法时,呼叫站点不会保留任何先前的状态,并且应该仅链接当前的调用。- 参数
-
guardedInvocation
- 呼叫站点应用于构建其目标方法句柄的守卫调用。 -
relinkAndInvoke
- 一个重新链接和调用方法句柄。 这是一个匹配DynamicLinker
作为回调提供的呼叫站点的方法类型的方法句柄。 当该调用站点无法使用传递的参数调用其目标时,应将其用作最终的后备程序。 回退方法是这样的,当它被调用时,它将尝试为调用获取足够的目标GuardedInvocation
,然后调用270862434832332或RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)
,最后调用目标。
-
-