Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: base/trace_event/trace_event_impl.cc

Issue 1239593002: Implement a new flow event API that allows binding flow events and regular events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unnecessary comments. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/trace_event/trace_event_impl.cc
diff --git a/base/trace_event/trace_event_impl.cc b/base/trace_event/trace_event_impl.cc
index f01a8880400f3ed55bfe1e0196965d9f301b03b9..b6e17565a5cb4e0c6f5b969454c2f8a8764723f8 100644
--- a/base/trace_event/trace_event_impl.cc
+++ b/base/trace_event/trace_event_impl.cc
@@ -413,7 +413,7 @@ void InitializeMetadataEvent(TraceEvent* trace_event,
&g_category_group_enabled[g_category_metadata],
metadata_name, ::trace_event_internal::kNoEventId,
num_args, &arg_name, &arg_type, &arg_value, NULL,
- TRACE_EVENT_FLAG_NONE);
+ TRACE_EVENT_FLAG_NONE, trace_event_internal::kNoBindId);
}
class AutoThreadLocalBoolean {
@@ -597,7 +597,8 @@ void TraceEvent::Initialize(
const unsigned char* arg_types,
const unsigned long long* arg_values,
const scoped_refptr<ConvertableToTraceFormat>* convertable_values,
- unsigned int flags) {
+ unsigned int flags,
+ unsigned long long bind_id) {
timestamp_ = timestamp;
thread_timestamp_ = thread_timestamp;
duration_ = TimeDelta::FromInternalValue(-1);
@@ -607,6 +608,7 @@ void TraceEvent::Initialize(
thread_id_ = thread_id;
phase_ = phase;
flags_ = flags;
+ bind_id_ = bind_id;
// Clamp num_args since it may have been set by a third_party library.
num_args = (num_args > kTraceMaxNumArgs) ? kTraceMaxNumArgs : num_args;
@@ -848,6 +850,16 @@ void TraceEvent::AppendAsJSON(
if (flags_ & TRACE_EVENT_FLAG_BIND_TO_ENCLOSING)
StringAppendF(out, ",\"bp\":\"e\"");
+ if (flags_ & TRACE_EVENT_FLAG_FLOW_OUT) {
+ StringAppendF(out, ",\"bind_id\":\"0x%" PRIx64 "\"", static_cast<uint64>(bind_id_));
vmpstr 2015/07/16 21:30:11 why not just make the type uint64?
+ StringAppendF(out, ",\"dir\":\"o\"");
+ }
+
+ if (flags_ & TRACE_EVENT_FLAG_FLOW_IN) {
+ StringAppendF(out, ",\"bind_id\":\"0x%" PRIx64 "\"", static_cast<uint64>(bind_id_));
+ StringAppendF(out, ",\"dir\":\"i\"");
+ }
+
// Instant events also output their scope.
if (phase_ == TRACE_EVENT_PHASE_INSTANT) {
char scope = '?';
@@ -1212,7 +1224,7 @@ void TraceLog::ThreadLocalEventBuffer::ReportOverhead(
event_timestamp, event_thread_timestamp,
TRACE_EVENT_PHASE_COMPLETE,
&g_category_group_enabled[g_category_trace_event_overhead],
- "overhead", 0, 0, NULL, NULL, NULL, NULL, 0);
+ "overhead", 0, 0, NULL, NULL, NULL, NULL, 0, 0);
trace_event->UpdateDuration(now, thread_now);
}
}
@@ -2014,7 +2026,8 @@ TraceEventHandle TraceLog::AddTraceEvent(
name, id, thread_id, now,
num_args, arg_names,
arg_types, arg_values,
- convertable_values, flags);
+ convertable_values, flags,
+ trace_event_internal::kNoBindId);
}
TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp(
@@ -2029,7 +2042,8 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp(
const unsigned char* arg_types,
const unsigned long long* arg_values,
const scoped_refptr<ConvertableToTraceFormat>* convertable_values,
- unsigned int flags) {
+ unsigned int flags,
+ unsigned long long bind_id) {
TraceEventHandle handle = { 0, 0, 0 };
if (!*category_group_enabled)
return handle;
@@ -2123,7 +2137,7 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp(
trace_event->Initialize(thread_id, offset_event_timestamp, thread_now,
phase, category_group_enabled, name, id,
num_args, arg_names, arg_types, arg_values,
- convertable_values, flags);
+ convertable_values, flags, bind_id);
#if defined(OS_ANDROID)
trace_event->SendToATrace();
@@ -2515,7 +2529,7 @@ ScopedTraceBinaryEfficient::ScopedTraceBinaryEfficient(
trace_event_internal::kNoEventId,
static_cast<int>(base::PlatformThread::CurrentId()),
base::TraceTicks::Now(), 0, NULL, NULL, NULL, NULL,
- TRACE_EVENT_FLAG_NONE);
+ TRACE_EVENT_FLAG_NONE, 0);
}
}

Powered by Google App Engine
This is Rietveld 408576698