- java.lang.Object
-
- java.lang.invoke.CallSite
-
- java.lang.invoke.MutableCallSite
-
- jdk.dynalink.support.AbstractRelinkableCallSite
-
- jdk.dynalink.support.ChainedCallSite
-
- 实现的所有接口
-
RelinkableCallSite
public class ChainedCallSite extends AbstractRelinkableCallSite
一个可重新链接的调用站点,它实现了多态内联缓存策略。 它记住它与之链接的最多8个GuardedInvocation
,并且在每个重新链接请求上构建一个级联的方法句柄链,一个调用回退到下一个。 可以通过覆盖子类中的getMaxChainLength()
来自定义记住调用的数量。 当使用新调用重新链接此调用站点并且链的长度已经达到最大值时,它将丢弃最旧的调用。 具有无效切换点的调用以及触发其无效异常的调用将从链中急切地删除。 调用永远不会重新排序; 最近链接的方法句柄始终位于链的起始位置,而最近最少链接的方法句柄位于链的起始位置。 呼叫站点可以同时安全地重新链接在多个线程上。 链接中的竞争条件通过丢弃在丢失线程上生成的GuardedInvocation
而不将其合并到链中来解决,因此它可能导致重复链接以获得相同的参数。
-
-
构造方法摘要
构造方法 构造器 描述 ChainedCallSite(CallSiteDescriptor descriptor)
创建一个新的链式呼叫站点。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 protected int
getMaxChainLength()
链中的最大方法句柄数。-
声明方法的类 java.lang.invoke.MutableCallSite
getTarget, setTarget, syncAll
-
声明方法的类 java.lang.invoke.CallSite
dynamicInvoker, type
-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
声明方法的接口 jdk.dynalink.RelinkableCallSite
getDescriptor, initialize, relink, resetAndRelink
-
-
-
-
构造方法详细信息
-
ChainedCallSite
public ChainedCallSite(CallSiteDescriptor descriptor)
创建一个新的链式呼叫站点。- 参数
-
descriptor
- 呼叫站点的描述符。
-
-
方法详细信息
-
getMaxChainLength
protected int getMaxChainLength()
链中的最大方法句柄数。 默认为8.如果需要更改值,可以在子类中覆盖它。- 结果
-
链中的最大方法句柄数。
将检查返回值,如果您的覆盖返回小于1的值,则将抛出
RuntimeException
。
-
-