Module jdk.dynalink
Package jdk.dynalink.linker.support

## Class SimpleLinkRequest

- java.lang.Object
- - jdk.dynalink.linker.support.SimpleLinkRequest

- All Implemented Interfaces:
    `LinkRequest`

      public class SimpleLinkRequest
      extends Object
      implements LinkRequest

  Default simple implementation of `LinkRequest`.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SimpleLinkRequest​(CallSiteDescriptor callSiteDescriptor, boolean callSiteUnstable, Object... arguments)` | Creates a new link request.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Object[]` | `getArguments​()` | Returns the arguments for the invocation being linked.
    `CallSiteDescriptor` | `getCallSiteDescriptor​()` | Returns the call site descriptor for the call site being linked.
    `Object` | `getReceiver​()` | Returns the first argument for the invocation being linked; this is typically the receiver object.
    `boolean` | `isCallSiteUnstable​()` | Returns true if the call site is considered unstable, that is, it has been relinked more times than was specified in `DynamicLinkerFactory.setUnstableRelinkThreshold(int)`.
    `LinkRequest` | `replaceArguments​(CallSiteDescriptor newCallSiteDescriptor, Object... newArguments)` | Returns a request identical to this one with call site descriptor and arguments replaced with the ones specified.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SimpleLinkRequest

          public SimpleLinkRequest​(CallSiteDescriptor callSiteDescriptor,
                                   boolean callSiteUnstable,
                                   Object... arguments)

      Creates a new link request.
      Parameters:
        `callSiteDescriptor` - the descriptor for the call site being linked. Must not be null.
        `callSiteUnstable` - true if the call site being linked is considered unstable.
        `arguments` - the arguments for the invocation. Must not be null.
      Throws:
        `NullPointerException` - if either `callSiteDescriptor` or `arguments` is null.

  - ### Method Detail

    - #### getArguments

          public Object[] getArguments​()

      Description copied from interface: `LinkRequest`
      Returns the arguments for the invocation being linked. The returned array must be a clone; modifications to it must not affect the arguments in this request.
      Specified by:
        `getArguments` in interface `LinkRequest`
      Returns:
        the arguments for the invocation being linked.

    - #### getReceiver

          public Object getReceiver​()

      Description copied from interface: `LinkRequest`
      Returns the first argument for the invocation being linked; this is typically the receiver object. This is a shorthand for `getArguments()[0]` that also avoids the cloning of the arguments array.
      Specified by:
        `getReceiver` in interface `LinkRequest`
      Returns:
        the receiver object.

    - #### getCallSiteDescriptor

          public CallSiteDescriptor getCallSiteDescriptor​()

      Description copied from interface: `LinkRequest`
      Returns the call site descriptor for the call site being linked.
      Specified by:
        `getCallSiteDescriptor` in interface `LinkRequest`
      Returns:
        the call site descriptor for the call site being linked.

    - #### isCallSiteUnstable

          public boolean isCallSiteUnstable​()

      Description copied from interface: `LinkRequest`
      Returns true if the call site is considered unstable, that is, it has been relinked more times than was specified in `DynamicLinkerFactory.setUnstableRelinkThreshold(int)`. Linkers should use this as a hint to prefer producing linkage that is more stable (its guard fails less frequently), even if that assumption causes a less effective version of an operation to be linked. This is just a hint, though, and linkers are allowed to ignore this property.
      Specified by:
        `isCallSiteUnstable` in interface `LinkRequest`
      Returns:
        true if the call site is considered unstable.

    - #### replaceArguments

          public LinkRequest replaceArguments​(CallSiteDescriptor newCallSiteDescriptor,
                                              Object... newArguments)

      Description copied from interface: `LinkRequest`
      Returns a request identical to this one with call site descriptor and arguments replaced with the ones specified.
      Specified by:
        `replaceArguments` in interface `LinkRequest`
      Parameters:
        `newCallSiteDescriptor` - the new call site descriptor
        `newArguments` - the new arguments
      Returns:
        a new request identical to this one, except with the call site descriptor and arguments replaced with the specified ones.