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.
| Modifiers | Name | Description |
|---|---|---|
enum |
IndyInterface.CallType |
Enum for easy differentiation between call types. |
| Modifiers | Name | Description |
|---|---|---|
protected static Logger |
LOG |
Logger. |
protected static boolean |
LOG_ENABLED |
Indicates if indy logging is enabled. |
static Lookup |
LOOKUP |
LOOKUP constant used for example in unreflect calls |
static int |
SAFE_NAVIGATION |
Flags for method and property calls. |
| Type Params | Return Type | Name and description |
|---|---|---|
|
public static CallSite |
bootstrap(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()Category enter/leave and VMPlugin.invalidateCallSites().
|
|
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 CallSite |
packedDispatchers(Lookup caller, String name, MethodType type)Invokedynamic bootstrap for a class's packed-closure dispatcher accessor (GROOVY-12151): links the class's generated dispatch tables into one constant bundle, lazily on first adapter creation. |
|
public static Class<?>[] |
packedParamTypes(Lookup caller, String name, Class<?> type, String descriptor)Constant-dynamic bootstrap for a packed closure literal's declared parameter types (GROOVY-12151): decodes a method descriptor into a Class[] resolved once per
literal site. |
|
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(Lookup lookup, String name, MethodType type)
|
Logger.
Indicates if indy logging is enabled.
LOOKUP constant used for example in unreflect calls
Flags for method and property calls.
Bootstrap method for method calls from Groovy-compiled code with indy.
caller - - the callercallType - - the type of calltype - - the parameter(s) and return type specificationname - - the real method nameflags - - call flags Get the cached methodHandle. if the related methodHandle is not found in the inline cache, cache and return it.
Category enter/leave and VMPlugin.invalidateCallSites().
Bulk-invalidates every loaded class SwitchPoint so sites re-link under the
new category state. Per-class MetaClass changes use the MetaClass-aware
registry path (IndyInvalidation.invalidateForMetaClassChange) or
ClassInfo.incVersion (exact-class
for in-place EMC updates).
Pre-6.0 this method also rotated a process-wide switchPoint field.
That field is gone; bulk policy lives entirely in IndyInvalidation.
Makes a fallback method for an invalidated method selection.
Invokedynamic bootstrap for a class's packed-closure dispatcher accessor (GROOVY-12151): links the class's generated dispatch tables into one constant bundle, lazily on first adapter creation. Delegates to GeneratedDispatcher.bootstrap; hosted here so emitted bytecode references only this central bootstrap surface.
Constant-dynamic bootstrap for a packed closure literal's declared parameter types
(GROOVY-12151): decodes a method descriptor into a Class[] resolved once per
literal site. Delegates to GeneratedDispatcher.paramTypes; hosted here so
emitted bytecode references only this central bootstrap surface.
Core method for indy method selection using runtime types.