< prev index next >
src/share/vm/compiler/compileBroker.cpp
Print this page
rev 9941 : 8147432: JVMCI should report bailouts in PrintCompilation output
*** 1792,1805 ****
should_break = directive->BreakAtExecuteOption || task->check_break_at_flags();
if (should_log && !directive->LogOption) {
should_log = false;
}
- // Allocate a new set of JNI handles.
- push_jni_handle_block();
Method* target_handle = task->method();
int compilable = ciEnv::MethodCompilable;
AbstractCompiler *comp = compiler(task_level);
int system_dictionary_modification_counter;
{
MutexLocker locker(Compile_lock, thread);
--- 1792,1805 ----
should_break = directive->BreakAtExecuteOption || task->check_break_at_flags();
if (should_log && !directive->LogOption) {
should_log = false;
}
Method* target_handle = task->method();
int compilable = ciEnv::MethodCompilable;
+ const char* failure_reason = NULL;
+ const char* retry_message = NULL;
AbstractCompiler *comp = compiler(task_level);
int system_dictionary_modification_counter;
{
MutexLocker locker(Compile_lock, thread);
*** 1815,1827 ****
--- 1815,1836 ----
JVMCIEnv env(task, system_dictionary_modification_counter);
methodHandle method(thread, target_handle);
jvmci->compile_method(method, osr_bci, &env);
post_compile(thread, task, event, task->code() != NULL, NULL);
+
+ failure_reason = env.failure_reason();
+ if (!env.retryable()) {
+ retry_message = "not retryable";
+ compilable = ciEnv::MethodCompilable_not_at_tier;
+ }
+
} else
#endif // INCLUDE_JVMCI
{
+ // Allocate a new set of JNI handles.
+ push_jni_handle_block();
NoHandleMark nhm;
ThreadToNativeFromVM ttn(thread);
ciEnv ci_env(task, system_dictionary_modification_counter);
*** 1866,1893 ****
// Copy this bit to the enclosing block:
compilable = ci_env.compilable();
if (ci_env.failing()) {
! task->set_failure_reason(ci_env.failure_reason());
ci_env.report_failure(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);
}
if (PrintCompilation) {
FormatBufferResource msg = retry_message != NULL ?
! FormatBufferResource("COMPILE SKIPPED: %s (%s)", ci_env.failure_reason(), retry_message) :
! FormatBufferResource("COMPILE SKIPPED: %s", ci_env.failure_reason());
task->print(tty, msg);
}
}
- post_compile(thread, task, event, !ci_env.failing(), &ci_env);
- }
- pop_jni_handle_block();
-
methodHandle method(thread, task->method());
DTRACE_METHOD_COMPILE_END_PROBE(method, compiler_name(task_level), task->is_success());
collect_statistics(thread, time, task);
--- 1875,1907 ----
// Copy this bit to the enclosing block:
compilable = ci_env.compilable();
if (ci_env.failing()) {
! failure_reason = ci_env.failure_reason();
! retry_message = ci_env.retry_message();
ci_env.report_failure(ci_env.failure_reason());
! }
!
! post_compile(thread, task, event, !ci_env.failing(), &ci_env);
!
! pop_jni_handle_block();
! }
!
! if (failure_reason != NULL) {
! task->set_failure_reason(failure_reason);
if (_compilation_log != NULL) {
! _compilation_log->log_failure(thread, task, failure_reason, retry_message);
}
if (PrintCompilation) {
FormatBufferResource msg = retry_message != NULL ?
! FormatBufferResource("COMPILE SKIPPED: %s (%s)", failure_reason, retry_message) :
! FormatBufferResource("COMPILE SKIPPED: %s", failure_reason);
task->print(tty, msg);
}
}
methodHandle method(thread, task->method());
DTRACE_METHOD_COMPILE_END_PROBE(method, compiler_name(task_level), task->is_success());
collect_statistics(thread, time, task);
< prev index next >