hotspot/src/share/vm/runtime/thread.cpp
changeset 19713 8ef23b417f55
parent 18946 65a870954fd7
child 19723 79c3f91dc0fa
--- a/hotspot/src/share/vm/runtime/thread.cpp	Mon Aug 26 17:37:25 2013 +0400
+++ b/hotspot/src/share/vm/runtime/thread.cpp	Mon Aug 26 17:41:05 2013 +0400
@@ -3636,6 +3636,16 @@
   CompileBroker::compilation_init();
 #endif
 
+  if (EnableInvokeDynamic) {
+    // Pre-initialize some JSR292 core classes to avoid deadlock during class loading.
+    // It is done after compilers are initialized, because otherwise compilations of
+    // signature polymorphic MH intrinsics can be missed
+    // (see SystemDictionary::find_method_handle_intrinsic).
+    initialize_class(vmSymbols::java_lang_invoke_MethodHandle(), CHECK_0);
+    initialize_class(vmSymbols::java_lang_invoke_MemberName(), CHECK_0);
+    initialize_class(vmSymbols::java_lang_invoke_MethodHandleNatives(), CHECK_0);
+  }
+
 #if INCLUDE_MANAGEMENT
   Management::initialize(THREAD);
 #endif // INCLUDE_MANAGEMENT