Module jdk.dynalink

Class AbstractRelinkableCallSite

All Implemented Interfaces:
Direct Known Subclasses:
ChainedCallSite, SimpleRelinkableCallSite

public abstract class AbstractRelinkableCallSite extends MutableCallSite implements RelinkableCallSite
A basic implementation of the RelinkableCallSite as a MutableCallSite. It carries a CallSiteDescriptor passed in the constructor and provides the correct implementation of the initialize(MethodHandle) method. Subclasses must provide RelinkableCallSite.relink(GuardedInvocation, MethodHandle) and RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle) methods.
  • Constructor Details

  • Method Details

    • getDescriptor

      public CallSiteDescriptor getDescriptor()
      Description copied from interface: RelinkableCallSite
      Returns the descriptor for this call site.
      Specified by:
      getDescriptor in interface RelinkableCallSite
      the descriptor for this call site.
    • initialize

      public void initialize(MethodHandle relinkAndInvoke)
      Description copied from interface: RelinkableCallSite
      Invoked by dynamic linker to initialize the relinkable call site by setting a relink-and-invoke method handle. The call site implementation is supposed to set this method handle as its target using CallSite.setTarget(MethodHandle). Relink-and-invoke is the initial method handle set by that will cause the call site to be relinked to an appropriate target on its first invocation based on its arguments, and that linked target will then be invoked (hence the name). This linking protocol effectively delays linking until the call site is invoked with actual arguments and thus ensures that linkers can make nuanced linking decisions based on those arguments and not just on the static method type of the call site.
      Specified by:
      initialize in interface RelinkableCallSite
      relinkAndInvoke - a relink-and-invoke method handle supplied by Dynalink.