diff src/share/vm/runtime/thread.cpp @ 12173:27ffd1c4537b

Merge
author rbackman
date Mon, 02 Sep 2013 13:13:45 +0200
parents f92b82d454fa 74608df95ba3
children b89a1a870965 8e94527f601e 40136aa2cdb1
line wrap: on
line diff
--- a/src/share/vm/runtime/thread.cpp	Fri Aug 30 00:29:52 2013 -0700
+++ b/src/share/vm/runtime/thread.cpp	Mon Sep 02 13:13:45 2013 +0200
@@ -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