< 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,11 +53,15 @@
_cpu_time(0),
_wallclock_time(os::javaTimeNanos()),
_stack_trace_hash(0),
_stackdepth(0),
_entering_suspend_flag(0),
- _dead(false) {}
+ _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,10 +80,11 @@
}
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,10 +92,13 @@
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 >