diff src/share/vm/compiler/compileBroker.cpp @ 20469:dd89808e49ba

8049530: Provide descriptive failure reason for compilation tasks removed for the queue Reviewed-by: roland, iveresov
author vlivanov
date Mon, 14 Jul 2014 03:26:52 -0700
parents 7301840ea20e
children 966205f0e717
line wrap: on
line diff
--- a/src/share/vm/compiler/compileBroker.cpp	Mon Jul 14 03:24:35 2014 -0700
+++ b/src/share/vm/compiler/compileBroker.cpp	Mon Jul 14 03:26:52 2014 -0700
@@ -287,6 +287,7 @@
   _hot_count = hot_count;
   _time_queued = 0;  // tidy
   _comment = comment;
+  _failure_reason = NULL;
 
   if (LogCompilation) {
     _time_queued = os::elapsed_counter();
@@ -565,6 +566,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'",
@@ -714,6 +720,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;
       }
     }
@@ -1788,6 +1795,7 @@
       } else {
         // After compilation is disabled, remove remaining methods from queue
         method->clear_queued_for_compilation();
+        task->set_failure_reason("compilation is disabled");
       }
     }
   }
@@ -1975,6 +1983,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);