mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8291840: Avoid JavaCalls for setting up _java_system_loader and _java_platform_loader
Reviewed-by: coleenp, iklam
This commit is contained in:
parent
6e6c64c6f6
commit
27c8826090
4 changed files with 64 additions and 6 deletions
|
@ -44,6 +44,7 @@
|
|||
#include "logging/logStream.hpp"
|
||||
#include "memory/resourceArea.hpp"
|
||||
#include "prims/jvmtiExport.hpp"
|
||||
#include "runtime/arguments.hpp"
|
||||
#include "runtime/globals_extension.hpp"
|
||||
#include "runtime/handles.inline.hpp"
|
||||
#include "runtime/javaCalls.hpp"
|
||||
|
@ -499,9 +500,16 @@ void Modules::define_archived_modules(Handle h_platform_loader, Handle h_system_
|
|||
}
|
||||
|
||||
ClassLoaderData* platform_loader_data = SystemDictionary::register_loader(h_platform_loader);
|
||||
SystemDictionary::set_platform_loader(platform_loader_data);
|
||||
ClassLoaderDataShared::restore_java_platform_loader_from_archive(platform_loader_data);
|
||||
|
||||
ClassLoaderData* system_loader_data = SystemDictionary::register_loader(h_system_loader);
|
||||
SystemDictionary::set_system_loader(system_loader_data);
|
||||
// system_loader_data here is always an instance of jdk.internal.loader.ClassLoader$AppClassLoader.
|
||||
// However, if -Djava.system.class.loader=xxx is specified, java_platform_loader() would
|
||||
// be an instance of a user-defined class, so make sure this never happens.
|
||||
assert(Arguments::get_property("java.system.class.loader") == NULL,
|
||||
"archived full module should have been disabled if -Djava.system.class.loader is specified");
|
||||
ClassLoaderDataShared::restore_java_system_loader_from_archive(system_loader_data);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue