< prev index next >

src/java.base/share/classes/sun/invoke/util/VerifyAccess.java

Print this page
@@ -199,13 +199,14 @@
          if (isPublic(mods)) {
  
              Module lookupModule = lookupClass.getModule();
              Module refModule = refc.getModule();
  
-             // early VM startup case, java.base not defined
-             if (lookupModule == null) {
-                 assert refModule == null;
+             // early VM startup case, java.base not defined or
+             // module system is not fully initialized and exports are not set up
+             if (lookupModule == null || !jdk.internal.misc.VM.isModuleSystemInited()) {
+                 assert lookupModule == refModule;
                  return true;
              }
  
              // allow access to public types in all unconditionally exported packages
              if ((allowedModes & UNCONDITIONAL_ALLOWED) != 0) {

@@ -225,16 +226,12 @@
              // 1. refc is in different module from lookupModule, or
              // 2. refc is in lookupModule and a different module from prevLookupModule
              Module prevLookupModule = prevLookupClass != null ? prevLookupClass.getModule()
                                                                : null;
              assert refModule != lookupModule || refModule != prevLookupModule;
-             if (isModuleAccessible(refc, lookupModule, prevLookupModule))
-                 return true;
  
-             // not exported but allow access during VM initialization
-             // because java.base does not have its exports setup
-             if (!jdk.internal.misc.VM.isModuleSystemInited())
+             if (isModuleAccessible(refc, lookupModule, prevLookupModule))
                  return true;
  
              // public class not accessible to lookupClass
              return false;
          }
< prev index next >