src/hotspot/share/jfr/jni/jfrGetAllEventClasses.cpp
changeset 52356 19c4a3eec4d7
parent 52334 a181612f0715
child 54847 59ea39bb2809
--- a/src/hotspot/share/jfr/jni/jfrGetAllEventClasses.cpp	Tue Oct 16 16:26:28 2018 -0400
+++ b/src/hotspot/share/jfr/jni/jfrGetAllEventClasses.cpp	Wed Oct 31 14:38:14 2018 -0400
@@ -90,6 +90,7 @@
   DEBUG_ONLY(JfrJavaSupport::check_java_thread_in_vm(thread));
 
   Stack<const Klass*, mtTracing> mark_stack;
+  MutexLocker ml(Compile_lock, thread);
   mark_stack.push(event_klass->subklass());
 
   while (!mark_stack.is_empty()) {
@@ -145,19 +146,16 @@
   assert(klass != NULL, "invariant");
   assert(JdkJfrEvent::is(klass), "invariant");
 
+  if (klass->subklass() == NULL) {
+    return empty_java_util_arraylist;
+  }
+
   ResourceMark rm(THREAD);
   GrowableArray<const void*> event_subklasses(THREAD, initial_size_growable_array);
-  {
-    MutexLocker cl(Compile_lock);
-    if (klass->subklass() == NULL) {
-      return empty_java_util_arraylist;
-    }
+  fill_klasses(event_subklasses, klass, THREAD);
 
-    fill_klasses(event_subklasses, klass, THREAD);
-
-    if (event_subklasses.is_empty()) {
-      return empty_java_util_arraylist;
-    }
+  if (event_subklasses.is_empty()) {
+    return empty_java_util_arraylist;
   }
 
   transform_klasses_to_local_jni_handles(event_subklasses, THREAD);