diff src/share/vm/ci/ciEnv.cpp @ 2273:2ab52cda08e5

Merge with OpenJDK.
author Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
date Thu, 03 Mar 2011 19:25:53 +0100
parents d25d4ca69222 5841dc1964f0
children 0654ee04b214
line wrap: on
line diff
--- a/src/share/vm/ci/ciEnv.cpp	Thu Feb 24 13:41:58 2011 +0100
+++ b/src/share/vm/ci/ciEnv.cpp	Thu Mar 03 19:25:53 2011 +0100
@@ -413,13 +413,17 @@
     fail_type = _unloaded_ciinstance_klass;
   }
   KlassHandle found_klass;
-  if (!require_local) {
-    klassOop kls = SystemDictionary::find_constrained_instance_or_array_klass(
-        sym, loader, KILL_COMPILE_ON_FATAL_(fail_type));
-    found_klass = KlassHandle(THREAD, kls);
-  } else {
-    klassOop kls = SystemDictionary::find_instance_or_array_klass(
-        sym, loader, domain, KILL_COMPILE_ON_FATAL_(fail_type));
+  {
+    ttyUnlocker ttyul;  // release tty lock to avoid ordering problems
+    MutexLocker ml(Compile_lock);
+    klassOop kls;
+    if (!require_local) {
+      kls = SystemDictionary::find_constrained_instance_or_array_klass(sym, loader,
+                                                                       KILL_COMPILE_ON_FATAL_(fail_type));
+    } else {
+      kls = SystemDictionary::find_instance_or_array_klass(sym, loader, domain,
+                                                           KILL_COMPILE_ON_FATAL_(fail_type));
+    }
     found_klass = KlassHandle(THREAD, kls);
   }