Package: org.codehaus.groovy.vmplugin.v8

## [Java] Class IndyInterface

- org.codehaus.groovy.vmplugin.v8.IndyInterface

-     public class IndyInterface
      extends Object

  Bytecode level interface for bootstrap methods used by invokedynamic. This class provides a logging ability by using the boolean system property groovy.indy.logging. Other than that this class contains the interfacing methods with bytecode for invokedynamic as well as some helper methods and classes.

- - ### Nested Class Summary

    Nested classes
    Modifiers | Name | Description
    --- | --- | ---
    `enum` | `IndyInterface.CallType` | Enum for easy differentiation between call types.

  - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `protected static Logger` | `LOG` | Logger.
    `protected static boolean` | `LOG_ENABLED` | Indicates if indy logging is enabled.
    `static MethodHandles.Lookup` | `LOOKUP` | LOOKUP constant used for example in unreflect calls
    `static int` | `SAFE_NAVIGATION` | Flags for method and property calls.
    `protected static SwitchPoint` | `switchPoint` |

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public static CallSite` | `bootstrap(MethodHandles.Lookup caller, String callType, MethodType type, String name, int flags)` Bootstrap method for method calls from Groovy-compiled code with indy.
    `` | `public static Object` | `fromCache(CacheableCallSite callSite, Class<?> sender, String methodName, int callID, Boolean safeNavigation, Boolean thisCall, Boolean spreadCall, Object dummyReceiver, Object[] arguments)` Get the cached methodHandle. if the related methodHandle is not found in the inline cache, cache and return it.
    `` | `protected static void` | `invalidateSwitchPoints()` Callback for constant metaclass update change
    `` | `protected static MethodHandle` | `makeFallBack(MutableCallSite mc, Class<?> sender, String name, int callID, MethodType type, boolean safeNavigation, boolean thisCall, boolean spreadCall)` Makes a fallback method for an invalidated method selection.
    `` | `public static Object` | `selectMethod(CacheableCallSite callSite, Class<?> sender, String methodName, int callID, Boolean safeNavigation, Boolean thisCall, Boolean spreadCall, Object dummyReceiver, Object[] arguments)` Core method for indy method selection using runtime types.
    `` | `public static CallSite` | `staticArrayAccess(MethodHandles.Lookup lookup, String name, MethodType type)` Since: 2.5.0

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### protected static final Logger LOG

      Logger.

    - #### protected static final boolean LOG_ENABLED

      Indicates if indy logging is enabled.

    - #### public static final MethodHandles.Lookup LOOKUP

      LOOKUP constant used for example in unreflect calls

    - #### public static final int SAFE_NAVIGATION

      Flags for method and property calls.

    - #### protected static SwitchPoint switchPoint

  - ### Method Detail

    - #### public static CallSite bootstrap(MethodHandles.Lookup caller, String callType, MethodType type, String name, int flags)

      Bootstrap method for method calls from Groovy-compiled code with indy.

      Parameters:
        `caller` - - the caller
        `callType` - - the type of call
        `type` - - the parameter(s) and return type specification
        `name` - - the real method name
        `flags` - - call flags
        - {@value #SAFE_NAVIGATION} is the flag value for safe navigation; see SAFE_NAVIGATION
        - {@value #THIS_CALL} is the flag value for a call on this; see THIS_CALL
        - {@value #SPREAD_CALL} is the flag value for a spread call; see SPREAD_CALL
      Since:
        2.1.0

    - #### @Deprecated
      public static Object fromCache(CacheableCallSite callSite, Class<?> sender, String methodName, int callID, Boolean safeNavigation, Boolean thisCall, Boolean spreadCall, Object dummyReceiver, Object[] arguments)

      Get the cached methodHandle. if the related methodHandle is not found in the inline cache, cache and return it.

      deprecated:
        Use the new bootHandle-based approach instead.

    - #### protected static void invalidateSwitchPoints()

      Callback for constant metaclass update change

    - #### protected static MethodHandle makeFallBack(MutableCallSite mc, Class<?> sender, String name, int callID, MethodType type, boolean safeNavigation, boolean thisCall, boolean spreadCall)

      Makes a fallback method for an invalidated method selection.

    - #### @Deprecated
      public static Object selectMethod(CacheableCallSite callSite, Class<?> sender, String methodName, int callID, Boolean safeNavigation, Boolean thisCall, Boolean spreadCall, Object dummyReceiver, Object[] arguments)

      Core method for indy method selection using runtime types.

      deprecated:
        Use the new bootHandle-based approach instead.

    - #### public static CallSite staticArrayAccess(MethodHandles.Lookup lookup, String name, MethodType type)

      Since:
        2.5.0