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
--- 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";