mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
6888880: JKernel VM to inject the sun.jkernel.DownloadManager as a boot classloader hook
Call sun.jkernel.DownloadManager.setBootClassLoaderHook during the kernel VM initialization Reviewed-by: alanb, coleenp, acorn
This commit is contained in:
parent
8b3ec53033
commit
b409d16477
2 changed files with 23 additions and 0 deletions
|
@ -104,6 +104,7 @@
|
||||||
template(java_lang_AssertionStatusDirectives, "java/lang/AssertionStatusDirectives") \
|
template(java_lang_AssertionStatusDirectives, "java/lang/AssertionStatusDirectives") \
|
||||||
template(sun_jkernel_DownloadManager, "sun/jkernel/DownloadManager") \
|
template(sun_jkernel_DownloadManager, "sun/jkernel/DownloadManager") \
|
||||||
template(getBootClassPathEntryForClass_name, "getBootClassPathEntryForClass") \
|
template(getBootClassPathEntryForClass_name, "getBootClassPathEntryForClass") \
|
||||||
|
template(setBootClassLoaderHook_name, "setBootClassLoaderHook") \
|
||||||
\
|
\
|
||||||
/* class file format tags */ \
|
/* class file format tags */ \
|
||||||
template(tag_source_file, "SourceFile") \
|
template(tag_source_file, "SourceFile") \
|
||||||
|
|
|
@ -884,6 +884,22 @@ static void call_initializeSystemClass(TRAPS) {
|
||||||
vmSymbolHandles::void_method_signature(), CHECK);
|
vmSymbolHandles::void_method_signature(), CHECK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef KERNEL
|
||||||
|
static void set_jkernel_boot_classloader_hook(TRAPS) {
|
||||||
|
klassOop k = SystemDictionary::sun_jkernel_DownloadManager_klass();
|
||||||
|
instanceKlassHandle klass (THREAD, k);
|
||||||
|
|
||||||
|
if (k == NULL) {
|
||||||
|
// sun.jkernel.DownloadManager may not present in the JDK; just return
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
JavaValue result(T_VOID);
|
||||||
|
JavaCalls::call_static(&result, klass, vmSymbolHandles::setBootClassLoaderHook_name(),
|
||||||
|
vmSymbolHandles::void_method_signature(), CHECK);
|
||||||
|
}
|
||||||
|
#endif // KERNEL
|
||||||
|
|
||||||
static void reset_vm_info_property(TRAPS) {
|
static void reset_vm_info_property(TRAPS) {
|
||||||
// the vm info string
|
// the vm info string
|
||||||
ResourceMark rm(THREAD);
|
ResourceMark rm(THREAD);
|
||||||
|
@ -3102,6 +3118,12 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
|
||||||
vm_exit_during_initialization(Handle(THREAD, PENDING_EXCEPTION));
|
vm_exit_during_initialization(Handle(THREAD, PENDING_EXCEPTION));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef KERNEL
|
||||||
|
if (JDK_Version::is_gte_jdk17x_version()) {
|
||||||
|
set_jkernel_boot_classloader_hook(THREAD);
|
||||||
|
}
|
||||||
|
#endif // KERNEL
|
||||||
|
|
||||||
#ifndef SERIALGC
|
#ifndef SERIALGC
|
||||||
// Support for ConcurrentMarkSweep. This should be cleaned up
|
// Support for ConcurrentMarkSweep. This should be cleaned up
|
||||||
// and better encapsulated. The ugly nested if test would go away
|
// and better encapsulated. The ugly nested if test would go away
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue