提交 2d134422 编写于 作者: V vlivanov

8049530: Provide descriptive failure reason for compilation tasks removed for the queue

Reviewed-by: roland, iveresov
上级 1174ea5e
...@@ -1112,9 +1112,6 @@ int ciEnv::num_inlined_bytecodes() const { ...@@ -1112,9 +1112,6 @@ int ciEnv::num_inlined_bytecodes() const {
// ------------------------------------------------------------------ // ------------------------------------------------------------------
// ciEnv::record_failure() // ciEnv::record_failure()
void ciEnv::record_failure(const char* reason) { void ciEnv::record_failure(const char* reason) {
if (log() != NULL) {
log()->elem("failure reason='%s'", reason);
}
if (_failure_reason == NULL) { if (_failure_reason == NULL) {
// Record the first failure reason. // Record the first failure reason.
_failure_reason = reason; _failure_reason = reason;
......
...@@ -287,6 +287,7 @@ void CompileTask::initialize(int compile_id, ...@@ -287,6 +287,7 @@ void CompileTask::initialize(int compile_id,
_hot_count = hot_count; _hot_count = hot_count;
_time_queued = 0; // tidy _time_queued = 0; // tidy
_comment = comment; _comment = comment;
_failure_reason = NULL;
if (LogCompilation) { if (LogCompilation) {
_time_queued = os::elapsed_counter(); _time_queued = os::elapsed_counter();
...@@ -565,6 +566,11 @@ void CompileTask::log_task_done(CompileLog* log) { ...@@ -565,6 +566,11 @@ void CompileTask::log_task_done(CompileLog* log) {
methodHandle method(thread, this->method()); methodHandle method(thread, this->method());
ResourceMark rm(thread); 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> // <task_done ... stamp='1.234'> </task>
nmethod* nm = code(); nmethod* nm = code();
log->begin_elem("task_done success='%d' nmsize='%d' count='%d'", log->begin_elem("task_done success='%d' nmsize='%d' count='%d'",
...@@ -714,6 +720,7 @@ void CompileQueue::purge_stale_tasks() { ...@@ -714,6 +720,7 @@ void CompileQueue::purge_stale_tasks() {
for (CompileTask* task = head; task != NULL; ) { for (CompileTask* task = head; task != NULL; ) {
CompileTask* next_task = task->next(); CompileTask* next_task = task->next();
CompileTaskWrapper ctw(task); // Frees the task CompileTaskWrapper ctw(task); // Frees the task
task->set_failure_reason("stale task");
task = next_task; task = next_task;
} }
} }
...@@ -1788,6 +1795,7 @@ void CompileBroker::compiler_thread_loop() { ...@@ -1788,6 +1795,7 @@ void CompileBroker::compiler_thread_loop() {
} else { } else {
// After compilation is disabled, remove remaining methods from queue // After compilation is disabled, remove remaining methods from queue
method->clear_queued_for_compilation(); method->clear_queued_for_compilation();
task->set_failure_reason("compilation is disabled");
} }
} }
} }
...@@ -1975,6 +1983,7 @@ void CompileBroker::invoke_compiler_on_method(CompileTask* task) { ...@@ -1975,6 +1983,7 @@ void CompileBroker::invoke_compiler_on_method(CompileTask* task) {
compilable = ci_env.compilable(); compilable = ci_env.compilable();
if (ci_env.failing()) { if (ci_env.failing()) {
task->set_failure_reason(ci_env.failure_reason());
const char* retry_message = ci_env.retry_message(); const char* retry_message = ci_env.retry_message();
if (_compilation_log != NULL) { if (_compilation_log != NULL) {
_compilation_log->log_failure(thread, task, ci_env.failure_reason(), retry_message); _compilation_log->log_failure(thread, task, ci_env.failure_reason(), retry_message);
......
...@@ -59,6 +59,7 @@ class CompileTask : public CHeapObj<mtCompiler> { ...@@ -59,6 +59,7 @@ class CompileTask : public CHeapObj<mtCompiler> {
jobject _hot_method_holder; jobject _hot_method_holder;
int _hot_count; // information about its invocation counter int _hot_count; // information about its invocation counter
const char* _comment; // more info about the task const char* _comment; // more info about the task
const char* _failure_reason;
public: public:
CompileTask() { CompileTask() {
...@@ -130,6 +131,10 @@ public: ...@@ -130,6 +131,10 @@ public:
void log_task_queued(); void log_task_queued();
void log_task_start(CompileLog* log); void log_task_start(CompileLog* log);
void log_task_done(CompileLog* log); void log_task_done(CompileLog* log);
void set_failure_reason(const char* reason) {
_failure_reason = reason;
}
}; };
// CompilerCounters // CompilerCounters
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册