--- a/hotspot/src/share/vm/compiler/compileBroker.cpp Mon Jul 14 03:25:40 2014 -0700
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp Mon Jul 14 03:26:52 2014 -0700
@@ -297,6 +297,7 @@
_hot_count = hot_count;
_time_queued = 0; // tidy
_comment = comment;
+ _failure_reason = NULL;
if (LogCompilation) {
_time_queued = os::elapsed_counter();
@@ -566,6 +567,11 @@
methodHandle method(thread, this->method());
ResourceMark rm(thread);
+ if (!_is_success) {
+ const char* reason = _failure_reason != NULL ? _failure_reason : "unknown";
+ log->elem("failure reason='%s'", reason);
+ }
+
// <task_done ... stamp='1.234'> </task>
nmethod* nm = code();
log->begin_elem("task_done success='%d' nmsize='%d' count='%d'",
@@ -733,6 +739,7 @@
for (CompileTask* task = head; task != NULL; ) {
CompileTask* next_task = task->next();
CompileTaskWrapper ctw(task); // Frees the task
+ task->set_failure_reason("stale task");
task = next_task;
}
}
@@ -1786,6 +1793,7 @@
} else {
// After compilation is disabled, remove remaining methods from queue
method->clear_queued_for_compilation();
+ task->set_failure_reason("compilation is disabled");
}
}
}
@@ -1973,6 +1981,7 @@
compilable = ci_env.compilable();
if (ci_env.failing()) {
+ task->set_failure_reason(ci_env.failure_reason());
const char* retry_message = ci_env.retry_message();
if (_compilation_log != NULL) {
_compilation_log->log_failure(thread, task, ci_env.failure_reason(), retry_message);