< prev index next >

src/hotspot/share/classfile/modules.cpp

Print this page

@@ -25,10 +25,11 @@
 #include "precompiled.hpp"
 #include "jvm.h"
 #include "classfile/classFileParser.hpp"
 #include "classfile/classLoader.hpp"
 #include "classfile/classLoaderData.inline.hpp"
+#include "classfile/classLoaderDataShared.hpp"
 #include "classfile/javaAssertions.hpp"
 #include "classfile/javaClasses.hpp"
 #include "classfile/javaClasses.inline.hpp"
 #include "classfile/moduleEntry.hpp"
 #include "classfile/modules.hpp"

@@ -37,10 +38,11 @@
 #include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
 #include "logging/log.hpp"
 #include "logging/logStream.hpp"
+#include "memory/metaspaceShared.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.inline.hpp"
 #include "utilities/stringUtils.hpp"

@@ -448,10 +450,32 @@
   if (h_loader.is_null() && !ClassLoader::has_jrt_entry()) {
     ClassLoader::add_to_exploded_build_list(module_symbol, CHECK);
   }
 }
 
+#if INCLUDE_CDS_JAVA_HEAP
+void Modules::define_archived_modules(jobject platform_loader, jobject system_loader, TRAPS) {
+  if (platform_loader == NULL) {
+    THROW_MSG(vmSymbols::java_lang_NullPointerException(), "Null platform loader object");
+  }
+
+  if (system_loader == NULL) {
+    THROW_MSG(vmSymbols::java_lang_NullPointerException(), "Null system loader object");
+  }
+
+  if (UseSharedSpaces && MetaspaceShared::use_full_module_graph()) {
+    Handle h_platform_loader(THREAD, JNIHandles::resolve_non_null(platform_loader));
+    ClassLoaderData* platform_loader_data = SystemDictionary::register_loader(h_platform_loader);
+    ClassLoaderDataShared::restore_java_platform_loader_from_archive(platform_loader_data);
+
+    Handle h_system_loader(THREAD, JNIHandles::resolve_non_null(system_loader));
+    ClassLoaderData* system_loader_data = SystemDictionary::register_loader(h_system_loader);
+    ClassLoaderDataShared::restore_java_system_loader_from_archive(system_loader_data);
+  }
+}
+#endif
+
 void Modules::set_bootloader_unnamed_module(jobject module, TRAPS) {
   ResourceMark rm(THREAD);
 
   if (module == NULL) {
     THROW_MSG(vmSymbols::java_lang_NullPointerException(), "Null module object");
< prev index next >