| Modifier and Type | Class and Description |
|---|---|
| pack-priv static class |
| Modifier and Type | Field and Description |
|---|---|
| private static final int | |
| private static final ReflectionFactory | |
| pack-priv static final int | |
| private static final Unsafe |
| Access | Constructor and Description |
|---|---|
| pack-priv |
| Modifier and Type | Method and Description |
|---|---|
| private static boolean | |
| pack-priv static void | |
| private static MethodHandle | findCallerSensitiveAdapter(Method method)
Finds the method handle of a caller-sensitive adapter for the given caller-sensitive method. |
| private static MethodHandle | |
| public static boolean | Returns: true if this method is signature polymorphicthe method to check method)Signature-polymorphic methods. |
| private static MethodHandle | |
| pack-priv static MethodHandle | Returns: transformed dmh to be used as a target in direct method accessorsDirectMethodHandle dmh, boolean whether given dmh represents static method or not isStatic, boolean whether given dmh represents a method with an
additional caller Class parameter hasCallerParameter)Transform the given dmh to a specialized target method handle. |
| pack-priv static MethodHandle | makeTarget(MethodHandle dmh, boolean isStatic, boolean hasCallerParameter)
Transforms the given dmh into a target method handle with the method type
|
| pack-priv static ConstructorAccessorImpl | newConstructorAccessor(Constructor<?> ctor)
Creates a ConstructorAccessor for the given reflected constructor. |
| pack-priv static FieldAccessorImpl | newFieldAccessor(Field field, boolean isReadOnly)
Creates a FieldAccessor for the given reflected field. |
| pack-priv static MethodAccessorImpl | newMethodAccessor(Method method, boolean callerSensitive)
Creates a MethodAccessor for the given reflected method. |
| pack-priv static ConstructorAccessorImpl | Returns: an accessible constructorthe class to instantiate decl, Constructor<?> the constructor to call ctor)Creates a ConstructorAccessor that is capable of creating instances of the given class and instantiated by the given constructor. |
| private static int | |
| pack-priv static MethodType | |
| pack-priv static MethodType | |
| private static boolean |
| MAX_JVM_ARITY | back to summary |
|---|---|
| private static final int MAX_JVM_ARITY | |
| reflectionFactory | back to summary |
|---|---|
| private static final ReflectionFactory reflectionFactory | |
| SPECIALIZED_PARAM_COUNT | back to summary |
|---|---|
| pack-priv static final int SPECIALIZED_PARAM_COUNT | |
| UNSAFE | back to summary |
|---|---|
| private static final Unsafe UNSAFE | |
| MethodHandleAccessorFactory | back to summary |
|---|---|
| pack-priv MethodHandleAccessorFactory() | |
| constructorInSuperclass | back to summary |
|---|---|
| private static boolean constructorInSuperclass(Class<?> decl, Constructor<?> ctor) | |
| ensureClassInitialized | back to summary |
|---|---|
| pack-priv static void ensureClassInitialized(Class<?> defc) Ensures the given class is initialized. If this is called from | |
| findCallerSensitiveAdapter | back to summary |
|---|---|
| private static MethodHandle findCallerSensitiveAdapter(Method method) throws IllegalAccessException Finds the method handle of a caller-sensitive adapter for the given caller-sensitive method. It has the same name as the given method with a trailing caller class parameter.
| |
| getDirectMethod | back to summary |
|---|---|
| private static MethodHandle getDirectMethod(Method method, boolean callerSensitive) throws IllegalAccessException | |
| isSignaturePolymorphicMethod | back to summary |
|---|---|
| public static boolean isSignaturePolymorphicMethod(Method method) Signature-polymorphic methods. Lookup has special rules for these methods, but core reflection must observe them as they are declared, and reflective invocation must invoke the native method stubs that throw UOE.
| |
| makeConstructorHandle | back to summary |
|---|---|
| private static MethodHandle makeConstructorHandle(MethodHandle ctor) | |
| makeSpecializedTarget | back to summary |
|---|---|
| pack-priv static MethodHandle makeSpecializedTarget(MethodHandle dmh, boolean isStatic, boolean hasCallerParameter) Transform the given dmh to a specialized target method handle.
If API Note This implementation avoids using MethodHandles::catchException to help cold startup performance since this combination is very costly to setup.
| |
| makeTarget | back to summary |
|---|---|
| pack-priv static MethodHandle makeTarget(MethodHandle dmh, boolean isStatic, boolean hasCallerParameter) Transforms the given dmh into a target method handle with the method type
| |
| newConstructorAccessor | back to summary |
|---|---|
| pack-priv static ConstructorAccessorImpl newConstructorAccessor(Constructor<?> ctor) Creates a ConstructorAccessor for the given reflected constructor. If a given constructor is called before the java.lang.invoke initialization, it will use the native VM reflection support. Otherwise, it will use the direct method handle of the given constructor. | |
| newFieldAccessor | back to summary |
|---|---|
| pack-priv static FieldAccessorImpl newFieldAccessor(Field field, boolean isReadOnly) Creates a FieldAccessor for the given reflected field. Limitation: Field access via core reflection is only supported after java.lang.invoke completes initialization. java.lang.invoke initialization starts soon after System::initPhase1 and method handles are ready for use when initPhase2 begins. During early VM startup (initPhase1), fields can be accessed directly from the VM or through JNI. | |
| newMethodAccessor | back to summary |
|---|---|
| pack-priv static MethodAccessorImpl newMethodAccessor(Method method, boolean callerSensitive) Creates a MethodAccessor for the given reflected method. If the given method is called before the java.lang.invoke initialization or the given method is a native method, it will use the native VM reflection support. If the given method is a caller-sensitive method and the corresponding caller-sensitive adapter with the caller class parameter is present, it will use the method handle of the caller-sensitive adapter. Otherwise, it will use the direct method handle of the given method.
| |
| newSerializableConstructorAccessor | back to summary |
|---|---|
| pack-priv static ConstructorAccessorImpl newSerializableConstructorAccessor(Class<?> decl, Constructor<?> ctor) Creates a ConstructorAccessor that is capable of creating instances of the given class and instantiated by the given constructor.
| |
| slotCount | back to summary |
|---|---|
| private static int slotCount(Executable member) | |
| specializedMethodType | back to summary |
|---|---|
| pack-priv static MethodType specializedMethodType(boolean isStatic, boolean hasCallerParameter, int paramCount) | |
| specializedMethodTypeForConstructor | back to summary |
|---|---|
| pack-priv static MethodType specializedMethodTypeForConstructor(int paramCount) | |
| useNativeAccessor | back to summary |
|---|---|
| private static boolean useNativeAccessor(Executable member) | |
| Modifier and Type | Field and Description |
|---|---|
| pack-priv static final JavaLangInvokeAccess |
| Access | Constructor and Description |
|---|---|
| pack-priv |
| JLIA | back to summary |
|---|---|
| pack-priv static final JavaLangInvokeAccess JLIA | |
| LazyStaticHolder | back to summary |
|---|---|
| pack-priv LazyStaticHolder() | |