Class DynamicCallSiteDesc

java.lang.Object
java.lang.constant.DynamicCallSiteDesc

public final class DynamicCallSiteDesc extends Object
A nominal descriptor for an invokedynamic call site.

A DynamicCallSiteDesc is immutable and its behavior does not rely on object identity.

Since:
12
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns ConstantDescs describing the bootstrap arguments for the invokedynamic.
    Returns a MethodHandleDesc describing the bootstrap method for the invokedynamic.
    final boolean
    Compares the specified object with this descriptor for equality.
    final int
    Answers an integer hash code for the receiver.
    Returns the invocation name that would appear in the NameAndType operand of the invokedynamic.
    Returns a MethodTypeDesc describing the invocation type that would appear in the NameAndType operand of the invokedynamic.
    of(DirectMethodHandleDesc bootstrapMethod, MethodTypeDesc invocationType)
    Creates a nominal descriptor for an invokedynamic call site whose bootstrap method has no static arguments and for which the name parameter is ConstantDescs.DEFAULT_NAME.
    of(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType)
    Creates a nominal descriptor for an invokedynamic call site whose bootstrap method has no static arguments.
    of(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType, ConstantDesc... bootstrapArgs)
    Creates a nominal descriptor for an invokedynamic call site.
    Reflectively invokes the bootstrap method with the specified arguments, and return the resulting CallSite
    Returns a compact textual description of this call site description, including the bootstrap method, the invocation name and type, and the static bootstrap arguments.
    withArgs(ConstantDesc... bootstrapArgs)
    Returns a nominal descriptor for an invokedynamic call site whose bootstrap method, name, and invocation type are the same as this one, but with the specified bootstrap arguments.
    withNameAndType(String invocationName, MethodTypeDesc invocationType)
    Returns a nominal descriptor for an invokedynamic call site whose bootstrap and bootstrap arguments are the same as this one, but with the specified invocationName and invocation invocationType

    Methods declared in class Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    Modifier and Type
    Method
    Description
    protected Object
    Answers a new instance of the same class as the receiver, whose slots have been filled in with the values in the slots of the receiver.
    protected void
    Deprecated, for removal: This API element is subject to removal in a future version.
    May cause performance issues, deadlocks and hangs.
    final Class<? extends Object>
    Answers the unique instance of java.lang.Class which represents the class of the receiver.
    final void
    Causes one thread which is waiting on the receiver to be made ready to run.
    final void
    Causes all threads which are waiting on the receiver to be made ready to run.
    final void
    Causes the thread which sent this message to be made not ready to run pending some change in the receiver (as indicated by notify or notifyAll).
    final void
    wait(long time)
    Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated by notify or notifyAll) or the expiration of the timeout.
    final void
    wait(long time, int frac)
    Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated by notify or notifyAll) or the expiration of the timeout.
  • Method Details

    • of

      public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType, ConstantDesc... bootstrapArgs)
      Creates a nominal descriptor for an invokedynamic call site.
      Parameters:
      bootstrapMethod - a DirectMethodHandleDesc describing the bootstrap method for the invokedynamic
      invocationName - The unqualified name that would appear in the NameAndType operand of the invokedynamic
      invocationType - a MethodTypeDesc describing the invocation type that would appear in the NameAndType operand of the invokedynamic
      bootstrapArgs - ConstantDescs describing the static arguments to the bootstrap, that would appear in the BootstrapMethods attribute
      Returns:
      the nominal descriptor
      Throws:
      NullPointerException - if any parameter or its contents are null
      IllegalArgumentException - if the invocation name has the incorrect format
      See Java Virtual Machine Specification:
      4.2.2 Unqualified Names
    • of

      public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType)
      Creates a nominal descriptor for an invokedynamic call site whose bootstrap method has no static arguments.
      Parameters:
      bootstrapMethod - The bootstrap method for the invokedynamic
      invocationName - The invocationName that would appear in the NameAndType operand of the invokedynamic
      invocationType - The invocation invocationType that would appear in the NameAndType operand of the invokedynamic
      Returns:
      the nominal descriptor
      Throws:
      NullPointerException - if any parameter is null
      IllegalArgumentException - if the invocation name has the incorrect format
    • of

      public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod, MethodTypeDesc invocationType)
      Creates a nominal descriptor for an invokedynamic call site whose bootstrap method has no static arguments and for which the name parameter is ConstantDescs.DEFAULT_NAME.
      Parameters:
      bootstrapMethod - a DirectMethodHandleDesc describing the bootstrap method for the invokedynamic
      invocationType - a MethodTypeDesc describing the invocation type that would appear in the NameAndType operand of the invokedynamic
      Returns:
      the nominal descriptor
      Throws:
      NullPointerException - if any parameter is null
    • withArgs

      public DynamicCallSiteDesc withArgs(ConstantDesc... bootstrapArgs)
      Returns a nominal descriptor for an invokedynamic call site whose bootstrap method, name, and invocation type are the same as this one, but with the specified bootstrap arguments.
      Parameters:
      bootstrapArgs - ConstantDescs describing the static arguments to the bootstrap, that would appear in the BootstrapMethods attribute
      Returns:
      the nominal descriptor
      Throws:
      NullPointerException - if the argument or its contents are null
    • withNameAndType

      public DynamicCallSiteDesc withNameAndType(String invocationName, MethodTypeDesc invocationType)
      Returns a nominal descriptor for an invokedynamic call site whose bootstrap and bootstrap arguments are the same as this one, but with the specified invocationName and invocation invocationType
      Parameters:
      invocationName - The unqualified name that would appear in the NameAndType operand of the invokedynamic
      invocationType - a MethodTypeDesc describing the invocation type that would appear in the NameAndType operand of the invokedynamic
      Returns:
      the nominal descriptor
      Throws:
      NullPointerException - if any parameter is null
      IllegalArgumentException - if the invocation name has the incorrect format
      See Java Virtual Machine Specification:
      4.2.2 Unqualified Names
    • invocationName

      public String invocationName()
      Returns the invocation name that would appear in the NameAndType operand of the invokedynamic.
      Returns:
      the invocation name
    • invocationType

      public MethodTypeDesc invocationType()
      Returns a MethodTypeDesc describing the invocation type that would appear in the NameAndType operand of the invokedynamic.
      Returns:
      the invocation type
    • bootstrapMethod

      public MethodHandleDesc bootstrapMethod()
      Returns a MethodHandleDesc describing the bootstrap method for the invokedynamic.
      Returns:
      the bootstrap method for the invokedynamic
    • bootstrapArgs

      public ConstantDesc[] bootstrapArgs()
      Returns ConstantDescs describing the bootstrap arguments for the invokedynamic. The returned array is always non-null. A zero length array is returned if this DynamicCallSiteDesc has no bootstrap arguments.
      Returns:
      the bootstrap arguments for the invokedynamic
    • resolveCallSiteDesc

      public CallSite resolveCallSiteDesc(MethodHandles.Lookup lookup) throws Throwable
      Reflectively invokes the bootstrap method with the specified arguments, and return the resulting CallSite
      Parameters:
      lookup - The MethodHandles.Lookup used to resolve class names
      Returns:
      the CallSite
      Throws:
      Throwable - if any exception is thrown by the bootstrap method
    • equals

      public final boolean equals(Object o)
      Compares the specified object with this descriptor for equality. Returns true if and only if the specified object is also a DynamicCallSiteDesc, and both descriptors have equal bootstrap methods, bootstrap argument lists, invocation name, and invocation type.
      Overrides:
      equals in class Object
      Parameters:
      o - the DynamicCallSiteDesc to compare to this DynamicCallSiteDesc
      Returns:
      true if the specified DynamicCallSiteDesc is equal to this DynamicCallSiteDesc.
      See Also:
    • hashCode

      public final int hashCode()
      Description copied from class: Object
      Answers an integer hash code for the receiver. Any two objects which answer true when passed to .equals must answer the same value for this method.
      Overrides:
      hashCode in class Object
      Returns:
      the receiver's hash.
      See Also:
    • toString

      public String toString()
      Returns a compact textual description of this call site description, including the bootstrap method, the invocation name and type, and the static bootstrap arguments.
      Overrides:
      toString in class Object
      Returns:
      A compact textual description of this call site descriptor