APIdia Launch Partner
Top Inners Fields Constructors Methods
jdk.internal.reflect

pack-priv Class DirectMethodHandleAccessor

extends MethodAccessorImpl
Class Inheritance
Imports
jdk.internal.access.JavaLangInvokeAccess, .SharedSecrets, jdk.internal.invoke.MhUtil, jdk.internal.misc.VM, jdk.internal.vm.annotation.ForceInline, .Hidden, java.lang.invoke.MethodHandle, .MethodHandles, .WrongMethodTypeException, java.lang.reflect.InvocationTargetException, .Method, .Modifier

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv static class
DirectMethodHandleAccessor.NativeAccessor

Invoke the method via native VM reflection

Field Summary

Modifier and TypeField and Description
private final Class<?>
private final int
private static final int
private static final int
private static final int
private static final int
private final int
private final MethodHandle

Constructor Summary

AccessConstructor and Description
pack-priv
DirectMethodHandleAccessor(Method method, MethodHandle target, boolean hasCallerParameter)

Method Summary

Modifier and TypeMethod and Description
pack-priv static MethodAccessorImpl
callerSensitiveAdapter(Method original, MethodHandle target)

Creates MethodAccessorImpl for the adapter method for a caller-sensitive method.

private static void
checkArgumentCount(int paramCount, Object[] args)

private void
private static Method
findCSMethodAdapter(Method method)

Returns an adapter for caller-sensitive method if present.

private boolean
public Object
public Object
private Object
invokeImpl(Object obj, Object[] args)

private Object
invokeImpl(Object obj, Object[] args, Class<?> caller)

private boolean
private boolean
pack-priv static MethodAccessorImpl
methodAccessor(Method method, MethodHandle target)

Creates a MethodAccessorImpl for a non-native method.

pack-priv static MethodAccessorImpl
nativeAccessor(Method method, boolean callerSensitive)

Creates MethodAccessorImpl that invokes the given method via VM native reflection support.

Field Detail

declaringClassback to summary
private final Class<?> declaringClass
flagsback to summary
private final int flags
HAS_CALLER_PARAM_BITback to summary
private static final int HAS_CALLER_PARAM_BIT
IS_STATIC_BITback to summary
private static final int IS_STATIC_BIT
NONZERO_BITback to summary
private static final int NONZERO_BIT
PARAM_COUNT_MASKback to summary
private static final int PARAM_COUNT_MASK
paramCountback to summary
private final int paramCount
targetback to summary
private final MethodHandle target

Constructor Detail

DirectMethodHandleAccessorback to summary
pack-priv DirectMethodHandleAccessor(Method method, MethodHandle target, boolean hasCallerParameter)

Method Detail

callerSensitiveAdapterback to summary
pack-priv static MethodAccessorImpl callerSensitiveAdapter(Method original, MethodHandle target)

Creates MethodAccessorImpl for the adapter method for a caller-sensitive method. The given target method handle is the adapter method with the additional caller class parameter.

checkArgumentCountback to summary
private static void checkArgumentCount(int paramCount, Object[] args)
checkReceiverback to summary
private void checkReceiver(Object o)
findCSMethodAdapterback to summary
private static Method findCSMethodAdapter(Method method)

Returns an adapter for caller-sensitive method if present. Otherwise, null. A trusted method can define an adapter method for a caller-sensitive method `foo` with an additional caller class argument that will be invoked reflectively.

hasCallerParameterback to summary
private boolean hasCallerParameter()
invokeback to summary
public Object invoke(Object obj, Object[] args) throws InvocationTargetException

Implements abstract jdk.internal.reflect.MethodAccessorImpl.invoke.

Implements jdk.internal.reflect.MethodAccessor.invoke.

Doc from jdk.internal.reflect.MethodAccessorImpl.invoke.

Matches specification in java.lang.reflect.Method

Annotations
@Override
@ForceInline
invokeback to summary
public Object invoke(Object obj, Object[] args, Class<?> caller) throws InvocationTargetException

Overrides jdk.internal.reflect.MethodAccessorImpl.invoke.

Implements jdk.internal.reflect.MethodAccessor.invoke.

Annotations
@Override
@ForceInline
invokeImplback to summary
private Object invokeImpl(Object obj, Object[] args) throws Throwable
Annotations
@Hidden
@ForceInline
invokeImplback to summary
private Object invokeImpl(Object obj, Object[] args, Class<?> caller) throws Throwable
Annotations
@Hidden
@ForceInline
isIllegalArgumentback to summary
private boolean isIllegalArgument(RuntimeException ex)
isStaticback to summary
private boolean isStatic()
methodAccessorback to summary
pack-priv static MethodAccessorImpl methodAccessor(Method method, MethodHandle target)

Creates a MethodAccessorImpl for a non-native method.

nativeAccessorback to summary
pack-priv static MethodAccessorImpl nativeAccessor(Method method, boolean callerSensitive)

Creates MethodAccessorImpl that invokes the given method via VM native reflection support. This is used for native methods. It can be used for java methods during early VM startup.

jdk.internal.reflect back to summary

pack-priv Class DirectMethodHandleAccessor.NativeAccessor

extends MethodAccessorImpl
Class Inheritance

Invoke the method via native VM reflection

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv static class

Field Summary

Modifier and TypeField and Description
private final boolean
private final Method
private MethodHandle
private final Method

Constructor Summary

AccessConstructor and Description
pack-priv
pack-priv
NativeAccessor(Method method, Method csmAdapter)

Method Summary

Modifier and TypeMethod and Description
public Object
public Object
private static native Object
invoke0(Method m, Object obj, Object[] args)

public Object
private MethodHandle

Field Detail

callerSensitiveback to summary
private final boolean callerSensitive
csmAdapterback to summary
private final Method csmAdapter
maInvokerback to summary
private MethodHandle maInvoker
methodback to summary
private final Method method

Constructor Detail

NativeAccessorback to summary
pack-priv NativeAccessor(Method method)
NativeAccessorback to summary
pack-priv NativeAccessor(Method method, Method csmAdapter)

Method Detail

invokeback to summary
public Object invoke(Object obj, Object[] args) throws InvocationTargetException

Implements abstract jdk.internal.reflect.MethodAccessorImpl.invoke.

Implements jdk.internal.reflect.MethodAccessor.invoke.

Doc from jdk.internal.reflect.MethodAccessorImpl.invoke.

Matches specification in java.lang.reflect.Method

Annotations
@Override
invokeback to summary
public Object invoke(Object obj, Object[] args, Class<?> caller) throws InvocationTargetException

Overrides jdk.internal.reflect.MethodAccessorImpl.invoke.

Implements jdk.internal.reflect.MethodAccessor.invoke.

Annotations
@Override
invoke0back to summary
private static native Object invoke0(Method m, Object obj, Object[] args)
invokeViaReflectiveInvokerback to summary
public Object invokeViaReflectiveInvoker(Object obj, Object[] args) throws InvocationTargetException
methodAccessorInvokerback to summary
private MethodHandle methodAccessorInvoker()
jdk.internal.reflect back to summary

pack-priv Class DirectMethodHandleAccessor.NativeAccessor.ReflectiveInvoker

extends Object
Class Inheritance
  • java.lang.Object
  • jdk.internal.reflect.DirectMethodHandleAccessor.NativeAccessor.ReflectiveInvoker

Field Summary

Modifier and TypeField and Description
pack-priv static final JavaLangInvokeAccess
pack-priv static final MethodHandle

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
pack-priv static MethodHandle
bindTo(DirectMethodHandleAccessor.NativeAccessor accessor)

Return a method handle for NativeAccessor::invoke bound to the given accessor object

pack-priv static Object
invoke(MethodHandle target, Class<?> caller, Object obj, Object[] args)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

JLIAback to summary
pack-priv static final JavaLangInvokeAccess JLIA
NATIVE_ACCESSOR_INVOKEback to summary
pack-priv static final MethodHandle NATIVE_ACCESSOR_INVOKE

Constructor Detail

ReflectiveInvokerback to summary
pack-priv ReflectiveInvoker()

Method Detail

bindToback to summary
pack-priv static MethodHandle bindTo(DirectMethodHandleAccessor.NativeAccessor accessor)

Return a method handle for NativeAccessor::invoke bound to the given accessor object

invokeback to summary
pack-priv static Object invoke(MethodHandle target, Class<?> caller, Object obj, Object[] args) throws InvocationTargetException