< prev index next >
src/share/vm/compiler/compileBroker.cpp
Print this page
@@ -28,10 +28,11 @@
#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,11 +42,10 @@
#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
@@ -1909,10 +1909,23 @@
}
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,21 +2019,29 @@
// 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 *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,18 +2051,11 @@
}
}
// 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();
+ post_compilation_event(&event, task);
}
}
pop_jni_handle_block();
methodHandle method(thread, task->method());
< prev index next >