< prev index next >

src/java.base/share/classes/jdk/internal/reflect/Reflection.java

Print this page
*** 29,10 ***
--- 29,11 ---
  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;

*** 113,11 ***
      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.
       *
--- 114,14 ---
      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 >