changeset 26807:843ea33eb963

8058461: serviceability/dcmd/CodelistTest.java and serviceability/dcmd/CompilerQueueTest.java SIGSEGV Summary: Print only alive nmethods and add lock to print compile queue Reviewed-by: kvn, anoll
author neliasso
date Mon, 15 Sep 2014 17:12:01 +0200
parents 73f3e9ac86f5
children b2a4db3243d6
files hotspot/src/share/vm/compiler/compileBroker.cpp hotspot/src/share/vm/services/diagnosticCommand.hpp
diffstat 2 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp	Thu Sep 18 09:37:26 2014 +0200
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp	Mon Sep 15 17:12:01 2014 +0200
@@ -783,18 +783,22 @@
 
 
 void CompileBroker::print_compile_queues(outputStream* st) {
-  _c1_compile_queue->print(st);
-  _c2_compile_queue->print(st);
+  MutexLocker locker(MethodCompileQueue_lock);
+  if (_c1_compile_queue != NULL) {
+    _c1_compile_queue->print(st);
+  }
+  if (_c2_compile_queue != NULL) {
+    _c2_compile_queue->print(st);
+  }
 }
 
-
 void CompileQueue::print(outputStream* st) {
-  assert_locked_or_safepoint(lock());
+  assert(lock()->owned_by_self(), "must own lock");
   st->print_cr("Contents of %s", name());
   st->print_cr("----------------------------");
   CompileTask* task = _first;
   if (task == NULL) {
-    st->print_cr("Empty");;
+    st->print_cr("Empty");
   } else {
     while (task != NULL) {
       task->print_compilation(st, NULL, true, true);
--- a/hotspot/src/share/vm/services/diagnosticCommand.hpp	Thu Sep 18 09:37:26 2014 +0200
+++ b/hotspot/src/share/vm/services/diagnosticCommand.hpp	Mon Sep 15 17:12:01 2014 +0200
@@ -427,7 +427,7 @@
     return "Compiler.codelist";
   }
   static const char* description() {
-    return "Print all compiled methods in code cache.";
+    return "Print all compiled methods in code cache that are alive";
   }
   static const char* impact() {
     return "Medium";