Module  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提供的重新链接和调用方法句柄。
      • getDescriptor

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

        void relink​(GuardedInvocation guardedInvocation,
                    MethodHandle relinkAndInvoke)
        每次调用站点重新链接时,动态链接器都会调用此方法(但是有关异常,请参阅resetAndRelink(GuardedInvocation, MethodHandle) )。 它将通过一个GuardedInvocation ,呼叫站点应该合并到其目标方法句柄中。 当调用此方法时,允许调用站点保持其他无效的调用,以实现多态内联缓存,并通过此调用组合它们以形成其最终目标。
        参数
        guardedInvocation - 呼叫站点应该合并到其目标方法句柄中的守卫调用。
        relinkAndInvoke - 一个重新链接和调用方法句柄。 这是一个匹配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) ,最后调用目标。