< prev index next >
src/share/vm/compiler/compileBroker.cpp
Print this page
*** 28,37 ****
--- 28,38 ----
#include "code/codeCache.hpp"
#include "compiler/compileBroker.hpp"
#include "compiler/compileLog.hpp"
#include "compiler/compilerOracle.hpp"
#include "interpreter/linkResolver.hpp"
+ #include "jfr/jfrEvents.hpp"
#include "memory/allocation.inline.hpp"
#include "oops/methodData.hpp"
#include "oops/method.hpp"
#include "oops/oop.inline.hpp"
#include "prims/nativeLookup.hpp"
*** 41,51 ****
#include "runtime/interfaceSupport.hpp"
#include "runtime/javaCalls.hpp"
#include "runtime/os.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/sweeper.hpp"
- #include "trace/tracing.hpp"
#include "utilities/dtrace.hpp"
#include "utilities/events.hpp"
#ifdef COMPILER1
#include "c1/c1_Compiler.hpp"
#endif
--- 42,51 ----
*** 1909,1918 ****
--- 1909,1931 ----
}
ttyLocker ttyl;
tty->print("%s", s.as_string());
}
+ static void post_compilation_event(EventCompilation* event, CompileTask* task) {
+ assert(event != NULL, "invariant");
+ assert(event->should_commit(), "invariant");
+ event->set_method(task->method());
+ event->set_compileId(task->compile_id());
+ event->set_compileLevel(task->comp_level());
+ event->set_succeded(task->is_success());
+ event->set_isOsr(task->osr_bci() != CompileBroker::standard_entry_bci);
+ event->set_codeSize((task->code() == NULL) ? 0 : task->code()->total_size());
+ event->set_inlinedBytes(task->num_inlined_bytecodes());
+ event->commit();
+ }
+
// ------------------------------------------------------------------
// CompileBroker::invoke_compiler_on_method
//
// Compile a method.
//
*** 2006,2026 ****
// Copy this bit to the enclosing block:
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);
}
if (PrintCompilation) {
FormatBufferResource msg = retry_message != NULL ?
err_msg_res("COMPILE SKIPPED: %s (%s)", ci_env.failure_reason(), retry_message) :
err_msg_res("COMPILE SKIPPED: %s", ci_env.failure_reason());
task->print_compilation(tty, msg);
}
} else {
task->mark_success();
task->set_num_inlined_bytecodes(ci_env.num_inlined_bytecodes());
if (_compilation_log != NULL) {
nmethod* code = task->code();
--- 2019,2047 ----
// Copy this bit to the enclosing block:
compilable = ci_env.compilable();
if (ci_env.failing()) {
! const char *failure_reason = ci_env.failure_reason();
const char* retry_message = ci_env.retry_message();
+ task->set_failure_reason(failure_reason);
if (_compilation_log != NULL) {
_compilation_log->log_failure(thread, task, ci_env.failure_reason(), retry_message);
}
if (PrintCompilation) {
FormatBufferResource msg = retry_message != NULL ?
err_msg_res("COMPILE SKIPPED: %s (%s)", ci_env.failure_reason(), retry_message) :
err_msg_res("COMPILE SKIPPED: %s", ci_env.failure_reason());
task->print_compilation(tty, msg);
}
+
+ EventCompilationFailure event;
+ if (event.should_commit()) {
+ event.set_compileId(compile_id);
+ event.set_failureMessage(failure_reason);
+ event.commit();
+ }
} else {
task->mark_success();
task->set_num_inlined_bytecodes(ci_env.num_inlined_bytecodes());
if (_compilation_log != NULL) {
nmethod* code = task->code();
*** 2030,2047 ****
}
}
// simulate crash during compilation
assert(task->compile_id() != CICrashAt, "just as planned");
if (event.should_commit()) {
! event.set_method(target->get_Method());
! event.set_compileID(compile_id);
! event.set_compileLevel(task->comp_level());
! event.set_succeded(task->is_success());
! event.set_isOsr(is_osr);
! event.set_codeSize((task->code() == NULL) ? 0 : task->code()->total_size());
! event.set_inlinedBytes(task->num_inlined_bytecodes());
! event.commit();
}
}
pop_jni_handle_block();
methodHandle method(thread, task->method());
--- 2051,2061 ----
}
}
// simulate crash during compilation
assert(task->compile_id() != CICrashAt, "just as planned");
if (event.should_commit()) {
! post_compilation_event(&event, task);
}
}
pop_jni_handle_block();
methodHandle method(thread, task->method());
< prev index next >