模块  jdk.dynalink
软件包  jdk.dynalink

Interface RelinkableCallSite

    • 方法详细信息

      • initialize

        void initialize​(MethodHandle relinkAndInvoke)
        由动态链接器调用,通过设置relink-and-invoke方法句柄来初始化可重新链接的调用站点。 调用站点实现应该使用CallSite.setTarget(MethodHandle)将此方法句柄设置为其目标。 Relink-and-invoke是由DynamicLinker.link(RelinkableCallSite)设置的初始方法句柄,它将使调用站点在其第一次调用时基于其参数重新链接到适当的目标,然后将调用该链接目标(因此名称)。 此链接协议有效地延迟链接,直到使用实际参数调用调用站点,从而确保链接器可以基于这些参数而不仅仅基于调用站点的静态方法类型做出细微的链接决策。
        参数
        relinkAndInvoke - Dynalink提供的relink-and-invoke方法句柄。
      • getDescriptor

        CallSiteDescriptor getDescriptor()
        返回此调用站点的描述符。
        结果
        此调用站点的描述符。
      • relink

        void relink​(GuardedInvocation guardedInvocation,
                    MethodHandle relinkAndInvoke)
        每次重新链接调用站点时,动态链接器都将调用此方法(但有关异常,请参阅resetAndRelink(GuardedInvocation, MethodHandle) )。 它将传递一个GuardedInvocation ,调用站点应该将其合并到其目标方法句柄中。 调用此方法时,允许调用站点保留其他非无效调用以实现多态内联高速缓存,并使用此调用组合它们以形成其最终目标。
        参数
        guardedInvocation - 调用站点应该包含在其目标方法句柄中的受保护调用。
        relinkAndInvoke - 一个relink-and-invoke方法句柄。 这是一个方法句柄, 它将DynamicLinker提供的调用站点的方法类型作为回调进行匹配 当它无法使用传递的参数调用其目标时,它应该被此调用站点用作最终回退。 回退方法是这样的,当它被调用时,它将尝试为调用获得足够的目标GuardedInvocation ,然后调用relink(GuardedInvocation, MethodHandle)resetAndRelink(GuardedInvocation, MethodHandle) ,最后调用目标。
      • resetAndRelink

        void resetAndRelink​(GuardedInvocation guardedInvocation,
                            MethodHandle relinkAndInvoke)
        每次重新链接调用站点时,动态链接器都会调用此方法并且链接器希望调用站点丢弃任何先前的链接状态(即它与relink(GuardedInvocation, MethodHandle)不同之处)。 它将通过一个GuardedInvocation ,调用站点应该使用它来构建新的目标方法句柄。 调用此方法时,不鼓励调用站点保留任何先前的状态,并且应该仅链接当前调用。
        参数
        guardedInvocation - 调用站点应用于构建其目标方法句柄的受保护调用。
        relinkAndInvoke - 一个relink-and-invoke方法句柄。 这是一个方法句柄, 它将DynamicLinker提供的调用站点的方法类型作为回调进行匹配 当它无法使用传递的参数调用其目标时,它应该被此调用站点用作最终回退。 回退方法是这样的,当它被调用时,它将尝试为调用获得足够的目标GuardedInvocation ,然后调用relink(GuardedInvocation, MethodHandle)resetAndRelink(GuardedInvocation, MethodHandle) ,最后调用目标。