< prev index next > src/java.base/share/classes/jdk/internal/reflect/Reflection.java
Print this page
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
+ import jdk.internal.access.JavaLangAccess;
import jdk.internal.access.SharedSecrets;
import jdk.internal.misc.VM;
import jdk.internal.module.ModuleBootstrap;
import jdk.internal.vm.annotation.ForceInline;
import jdk.internal.vm.annotation.IntrinsicCandidate;
public static void ensureNativeAccess(Class<?> currentClass, Class<?> owner, String methodName) {
// if there is no caller class, act as if the call came from unnamed module of system class loader
Module module = currentClass != null ?
currentClass.getModule() :
ClassLoader.getSystemClassLoader().getUnnamedModule();
! SharedSecrets.getJavaLangAccess().ensureNativeAccess(module, owner, methodName);
}
/**
* Verify access to a member and return {@code true} if it is granted.
*
public static void ensureNativeAccess(Class<?> currentClass, Class<?> owner, String methodName) {
// if there is no caller class, act as if the call came from unnamed module of system class loader
Module module = currentClass != null ?
currentClass.getModule() :
ClassLoader.getSystemClassLoader().getUnnamedModule();
! class Holder {
+ static final JavaLangAccess JLA = SharedSecrets.getJavaLangAccess();
+ }
+ Holder.JLA.ensureNativeAccess(module, owner, methodName, currentClass);
}
/**
* Verify access to a member and return {@code true} if it is granted.
*
< prev index next >