java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.MutableCallSite
jdk.dynalink.support.AbstractRelinkableCallSite
jdk.dynalink.support.SimpleRelinkableCallSite
- 所有已实现的接口:
RelinkableCallSite
实现单态内联缓存策略的可重新链接的调用站点,在任何给定时间仅链接到单个
GuardedInvocation 。如果该单个调用的守卫失败,或者它有一个无效的切换点,或者触发了它的无效异常,那么调用站点将丢弃它并要求其关联的DynamicLinker 重新链接它。
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述voidrelink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) 每次重新链接调用站点时,动态链接器都会调用此方法(但请参阅RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)以获取异常)。voidresetAndRelink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) 每次重新链接调用站点时,动态链接器都会调用此方法and链接器希望调用站点丢弃任何先前的链接状态(这就是它与RelinkableCallSite.relink(GuardedInvocation, MethodHandle)的不同之处)。在类 jdk.dynalink.support.AbstractRelinkableCallSite 中声明的方法
getDescriptor, initialize在类 java.lang.invoke.MutableCallSite 中声明的方法
dynamicInvoker, getTarget, setTarget, syncAll
-
构造方法详细信息
-
SimpleRelinkableCallSite
使用单态内联缓存策略创建一个新的调用站点。- 参数:
descriptor- 此调用站点的描述符
-
-
方法详情
-
relink
从接口RelinkableCallSite复制的描述每次重新链接调用站点时,动态链接器都会调用此方法(但请参阅RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)以获取异常)。它将传递一个GuardedInvocation,调用站点应将其合并到其目标方法句柄中。调用此方法时,允许调用站点保留其他非无效调用以实现多态内联缓存,并将它们与此调用组合以形成其最终目标。- 参数:
guardedInvocation- 调用站点应合并到其目标方法句柄中的受保护调用。relinkAndInvoke- 重新链接和调用方法句柄。这是一个方法句柄,与DynamicLinker作为回调提供的调用站点的方法类型相匹配。当它不能用传递的参数调用它的目标时,它应该被这个调用站点用作最终的回退。回退方法是这样的,当它被调用时,它会尝试为调用获取足够的目标GuardedInvocation,然后调用RelinkableCallSite.relink(GuardedInvocation, MethodHandle)或RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle),最后调用目标。
-
resetAndRelink
从接口RelinkableCallSite复制的描述每次重新链接调用站点时,动态链接器都会调用此方法and链接器希望调用站点丢弃任何先前的链接状态(这就是它与RelinkableCallSite.relink(GuardedInvocation, MethodHandle)的不同之处)。它将传递一个GuardedInvocation,调用站点应该使用它来构建其新的目标方法句柄。调用此方法时,不鼓励调用站点保留任何先前的状态,并且应该只链接当前调用。- 参数:
guardedInvocation- 调用站点应该用来构建其目标方法句柄的受保护调用。relinkAndInvoke- 重新链接和调用方法句柄。这是一个方法句柄,与DynamicLinker作为回调提供的调用站点的方法类型相匹配。当它不能用传递的参数调用它的目标时,它应该被这个调用站点用作最终的回退。回退方法是这样的,当它被调用时,它会尝试为调用获取足够的目标GuardedInvocation,然后调用RelinkableCallSite.relink(GuardedInvocation, MethodHandle)或RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle),最后调用目标。
-