--- a/hotspot/src/share/vm/runtime/thread.cpp Mon Nov 23 16:24:35 2009 -0500
+++ b/hotspot/src/share/vm/runtime/thread.cpp Wed Nov 25 08:37:04 2009 -0800
@@ -884,6 +884,22 @@
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 @@
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