< prev index next >
src/share/vm/jfr/support/jfrThreadLocal.cpp
Print this page
rev 9380 : 8237499: JFR: Include stack trace in the ThreadStart event
Reviewed-by: egahlin
*** 53,63 ****
_cpu_time(0),
_wallclock_time(os::javaTimeNanos()),
_stack_trace_hash(0),
_stackdepth(0),
_entering_suspend_flag(0),
! _dead(false) {}
u8 JfrThreadLocal::add_data_lost(u8 value) {
_data_lost += value;
return _data_lost;
}
--- 53,67 ----
_cpu_time(0),
_wallclock_time(os::javaTimeNanos()),
_stack_trace_hash(0),
_stackdepth(0),
_entering_suspend_flag(0),
! _dead(false) {
!
! Thread* thread = Thread::current_or_null();
! _parent_trace_id = thread != NULL ? thread->jfr_thread_local()->trace_id() : (traceid)0;
! }
u8 JfrThreadLocal::add_data_lost(u8 value) {
_data_lost += value;
return _data_lost;
}
*** 76,85 ****
--- 80,90 ----
}
static void send_java_thread_start_event(JavaThread* jt) {
EventThreadStart event;
event.set_thread(jt->jfr_thread_local()->thread_id());
+ event.set_parentThread(jt->jfr_thread_local()->parent_thread_id());
event.commit();
}
void JfrThreadLocal::on_start(Thread* t) {
assert(t != NULL, "invariant");
*** 87,96 ****
--- 92,104 ----
if (JfrRecorder::is_recording()) {
if (t->is_Java_thread()) {
send_java_thread_start_event((JavaThread*)t);
}
}
+ if (t->jfr_thread_local()->has_cached_stack_trace()) {
+ t->jfr_thread_local()->clear_cached_stack_trace();
+ }
}
static void send_java_thread_end_events(traceid id, JavaThread* jt) {
assert(jt != NULL, "invariant");
assert(Thread::current() == jt, "invariant");
< prev index next >