< 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 >