8049530: Provide descriptive failure reason for compilation tasks removed for the queue
Reviewed-by: roland, iveresov
This commit is contained in:
parent
3dd313825d
commit
9b8aaef575
@ -1125,9 +1125,6 @@ int ciEnv::num_inlined_bytecodes() const {
|
||||
// ------------------------------------------------------------------
|
||||
// ciEnv::record_failure()
|
||||
void ciEnv::record_failure(const char* reason) {
|
||||
if (log() != NULL) {
|
||||
log()->elem("failure reason='%s'", reason);
|
||||
}
|
||||
if (_failure_reason == NULL) {
|
||||
// Record the first failure reason.
|
||||
_failure_reason = reason;
|
||||
|
@ -297,6 +297,7 @@ void CompileTask::initialize(int compile_id,
|
||||
_hot_count = hot_count;
|
||||
_time_queued = 0; // tidy
|
||||
_comment = comment;
|
||||
_failure_reason = NULL;
|
||||
|
||||
if (LogCompilation) {
|
||||
_time_queued = os::elapsed_counter();
|
||||
@ -566,6 +567,11 @@ void CompileTask::log_task_done(CompileLog* log) {
|
||||
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 @@ void CompileQueue::purge_stale_tasks() {
|
||||
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 @@ void CompileBroker::compiler_thread_loop() {
|
||||
} 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 @@ void CompileBroker::invoke_compiler_on_method(CompileTask* task) {
|
||||
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);
|
||||
|
@ -64,6 +64,7 @@ class CompileTask : public CHeapObj<mtCompiler> {
|
||||
jobject _hot_method_holder;
|
||||
int _hot_count; // information about its invocation counter
|
||||
const char* _comment; // more info about the task
|
||||
const char* _failure_reason;
|
||||
|
||||
public:
|
||||
CompileTask() {
|
||||
@ -138,6 +139,10 @@ public:
|
||||
void log_task_queued();
|
||||
void log_task_start(CompileLog* log);
|
||||
void log_task_done(CompileLog* log);
|
||||
|
||||
void set_failure_reason(const char* reason) {
|
||||
_failure_reason = reason;
|
||||
}
|
||||
};
|
||||
|
||||
// CompilerCounters
|
||||
|
Loading…
x
Reference in New Issue
Block a user