Package org.codehaus.groovy.vmplugin.v7
Class IndyInterface
- java.lang.Object
-
- org.codehaus.groovy.vmplugin.v7.IndyInterface
-
public class IndyInterface extends java.lang.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 Modifier and Type Class Description static class
IndyInterface.CALL_TYPES
Enum for easy differentiation between call types
-
Field Summary
Fields Modifier and Type Field Description static int
GROOVY_OBJECT
flags for method and property callsstatic int
IMPLICIT_THIS
flags for method and property callsprotected static java.util.logging.Logger
LOG
Loggerprotected static boolean
LOG_ENABLED
boolean to indicate if logging for indy is enabledstatic java.lang.invoke.MethodHandles.Lookup
LOOKUP
LOOKUP constant used for for example unreflect callsstatic int
SAFE_NAVIGATION
flags for method and property callsstatic int
SPREAD_CALL
flags for method and property callsprotected static java.lang.invoke.SwitchPoint
switchPoint
static int
THIS_CALL
flags for method and property callsstatic int
UNCACHED_CALL
flags for method and property calls
-
Constructor Summary
Constructors Constructor Description IndyInterface()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static java.lang.invoke.CallSite
bootstrap(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String name, java.lang.invoke.MethodType type)
Deprecated.since Groovy 2.1.0static java.lang.invoke.CallSite
bootstrap(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String callType, java.lang.invoke.MethodType type, java.lang.String name, int flags)
bootstrap method for method calls from Groovy compiled code with indy enabled.static java.lang.invoke.CallSite
bootstrapCurrent(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String name, java.lang.invoke.MethodType type)
Deprecated.since Groovy 2.1.0static java.lang.invoke.CallSite
bootstrapCurrentSafe(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String name, java.lang.invoke.MethodType type)
Deprecated.since Groovy 2.1.0static java.lang.invoke.CallSite
bootstrapSafe(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String name, java.lang.invoke.MethodType type)
Deprecated.since Groovy 2.1.0protected static void
invalidateSwitchPoints()
Callback for constant meta class update changeprotected static java.lang.invoke.MethodHandle
makeFallBack(java.lang.invoke.MutableCallSite mc, java.lang.Class<?> sender, java.lang.String name, int callID, java.lang.invoke.MethodType type, boolean safeNavigation, boolean thisCall, boolean spreadCall)
Makes a fallback method for an invalidated method selectionstatic java.lang.Object
selectMethod(java.lang.invoke.MutableCallSite callSite, java.lang.Class sender, java.lang.String methodName, int callID, java.lang.Boolean safeNavigation, java.lang.Boolean thisCall, java.lang.Boolean spreadCall, java.lang.Object dummyReceiver, java.lang.Object[] arguments)
Core method for indy method selection using runtime types.static java.lang.invoke.CallSite
staticArrayAccess(java.lang.invoke.MethodHandles.Lookup lookup, java.lang.String name, java.lang.invoke.MethodType type)
-
-
-
Field Detail
-
SAFE_NAVIGATION
public static final int SAFE_NAVIGATION
flags for method and property calls- See Also:
- Constant Field Values
-
THIS_CALL
public static final int THIS_CALL
flags for method and property calls- See Also:
- Constant Field Values
-
GROOVY_OBJECT
public static final int GROOVY_OBJECT
flags for method and property calls- See Also:
- Constant Field Values
-
IMPLICIT_THIS
public static final int IMPLICIT_THIS
flags for method and property calls- See Also:
- Constant Field Values
-
SPREAD_CALL
public static final int SPREAD_CALL
flags for method and property calls- See Also:
- Constant Field Values
-
UNCACHED_CALL
public static final int UNCACHED_CALL
flags for method and property calls- See Also:
- Constant Field Values
-
LOG
protected static final java.util.logging.Logger LOG
Logger
-
LOG_ENABLED
protected static final boolean LOG_ENABLED
boolean to indicate if logging for indy is enabled
-
LOOKUP
public static final java.lang.invoke.MethodHandles.Lookup LOOKUP
LOOKUP constant used for for example unreflect calls
-
switchPoint
protected static java.lang.invoke.SwitchPoint switchPoint
-
-
Method Detail
-
invalidateSwitchPoints
protected static void invalidateSwitchPoints()
Callback for constant meta class update change
-
bootstrap
public static java.lang.invoke.CallSite bootstrap(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String callType, java.lang.invoke.MethodType type, java.lang.String name, int flags)
bootstrap method for method calls from Groovy compiled code with indy enabled. This method gets a flags parameter which uses the following encoding:- 1 is the flag value for safe navigation see
SAFE_NAVIGATION
- 2 is the flag value for a call on this see
THIS_CALL
- Parameters:
caller
- - the callercallType
- - the type of the calltype
- - the call site typename
- - the real method nameflags
- - call flags- Returns:
- the produced CallSite
- Since:
- Groovy 2.1.0
- 1 is the flag value for safe navigation see
-
bootstrapCurrent
@Deprecated public static java.lang.invoke.CallSite bootstrapCurrent(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String name, java.lang.invoke.MethodType type)
Deprecated.since Groovy 2.1.0bootstrap method for method calls with "this" as receiver
-
bootstrapCurrentSafe
@Deprecated public static java.lang.invoke.CallSite bootstrapCurrentSafe(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String name, java.lang.invoke.MethodType type)
Deprecated.since Groovy 2.1.0bootstrap method for method calls with "this" as receiver safe
-
bootstrap
@Deprecated public static java.lang.invoke.CallSite bootstrap(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String name, java.lang.invoke.MethodType type)
Deprecated.since Groovy 2.1.0bootstrap method for standard method calls
-
bootstrapSafe
@Deprecated public static java.lang.invoke.CallSite bootstrapSafe(java.lang.invoke.MethodHandles.Lookup caller, java.lang.String name, java.lang.invoke.MethodType type)
Deprecated.since Groovy 2.1.0bootstrap method for null safe standard method calls
-
makeFallBack
protected static java.lang.invoke.MethodHandle makeFallBack(java.lang.invoke.MutableCallSite mc, java.lang.Class<?> sender, java.lang.String name, int callID, java.lang.invoke.MethodType type, boolean safeNavigation, boolean thisCall, boolean spreadCall)
Makes a fallback method for an invalidated method selection
-
selectMethod
public static java.lang.Object selectMethod(java.lang.invoke.MutableCallSite callSite, java.lang.Class sender, java.lang.String methodName, int callID, java.lang.Boolean safeNavigation, java.lang.Boolean thisCall, java.lang.Boolean spreadCall, java.lang.Object dummyReceiver, java.lang.Object[] arguments) throws java.lang.Throwable
Core method for indy method selection using runtime types.- Throws:
java.lang.Throwable
-
staticArrayAccess
public static java.lang.invoke.CallSite staticArrayAccess(java.lang.invoke.MethodHandles.Lookup lookup, java.lang.String name, java.lang.invoke.MethodType type)
- Since:
- 2.5.0
-
-