< prev index next >
src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java
Print this page
@@ -102,12 +102,15 @@
// parent ClassLoader
private final BuiltinClassLoader parent;
// the URL class path, or null if there is no class path
- private final URLClassPath ucp;
+ private @Stable URLClassPath ucp;
+ void setClassPath(URLClassPath ucp) {
+ this.ucp = ucp;
+ }
/**
* A module defined/loaded by a built-in class loader.
*
* A LoadedModule encapsulates a ModuleReference along with its CodeSource
@@ -154,14 +157,26 @@
}
return url;
}
}
+ static class ArchivedData {
+ static Map<String, LoadedModule> packageToModule;
+ }
// maps package name to loaded module for modules in the boot layer
- private static final Map<String, LoadedModule> packageToModule
- = new ConcurrentHashMap<>(1024);
+ private static final Map<String, LoadedModule> packageToModule;
+
+ static {
+ VM.initializeFromArchive(ArchivedData.class);
+ if (ArchivedData.packageToModule != null) {
+ packageToModule = ArchivedData.packageToModule;
+ } else {
+ packageToModule = new ConcurrentHashMap<>(1024);
+ ArchivedData.packageToModule = packageToModule;
+ }
+ }
// maps a module name to a module reference
private final Map<String, ModuleReference> nameToModule;
// maps a module reference to a module reader
@@ -1040,6 +1055,11 @@
* checking with java.net.URLClassLoader.
*/
private static URL checkURL(URL url) {
return URLClassPath.checkURL(url);
}
+
+ // Called from VM only, during -Xshare:dump
+ private void resetArchivedStates() {
+ ucp = null;
+ }
}
< prev index next >