提交 83b09c8f 编写于 作者: M mchung

6888880: JKernel VM to inject the sun.jkernel.DownloadManager as a boot classloader hook

Summary: Call sun.jkernel.DownloadManager.setBootClassLoaderHook during the kernel VM initialization
Reviewed-by: alanb, coleenp, acorn
上级 e754b8e9
......@@ -104,6 +104,7 @@
template(java_lang_AssertionStatusDirectives, "java/lang/AssertionStatusDirectives") \
template(sun_jkernel_DownloadManager, "sun/jkernel/DownloadManager") \
template(getBootClassPathEntryForClass_name, "getBootClassPathEntryForClass") \
template(setBootClassLoaderHook_name, "setBootClassLoaderHook") \
\
/* class file format tags */ \
template(tag_source_file, "SourceFile") \
......
......@@ -884,6 +884,22 @@ static void call_initializeSystemClass(TRAPS) {
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) {
// the vm info string
ResourceMark rm(THREAD);
......@@ -3102,6 +3118,12 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
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
// Support for ConcurrentMarkSweep. This should be cleaned up
// and better encapsulated. The ugly nested if test would go away
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册