summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryuhaoz <yuhaoz@google.com>2015-06-11 13:39:40 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-11 20:40:09 +0000
commitf4d421351e25929f371ad6b23376eb856b06765c (patch)
tree2cd09b634f4d9628ddaf870375969b694bec8897
parent4a54191bda58dd18017efb87e3bab38389e46c0b (diff)
downloadchromium_src-f4d421351e25929f371ad6b23376eb856b06765c.zip
chromium_src-f4d421351e25929f371ad6b23376eb856b06765c.tar.gz
chromium_src-f4d421351e25929f371ad6b23376eb856b06765c.tar.bz2
Allow binding point to be specified on flow end events.
Review URL: https://codereview.chromium.org/1177853004 Cr-Commit-Position: refs/heads/master@{#334031}
-rw-r--r--base/trace_event/trace_event.h4
-rw-r--r--base/trace_event/trace_event_impl.cc3
-rw-r--r--base/trace_event/trace_event_unittest.cc19
-rw-r--r--ui/events/latency_info.cc2
4 files changed, 27 insertions, 1 deletions
diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h
index 397bafc..c41ca1e 100644
--- a/base/trace_event/trace_event.h
+++ b/base/trace_event/trace_event.h
@@ -852,6 +852,9 @@
#define TRACE_EVENT_FLOW_END0(category_group, name, id) \
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
category_group, name, id, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_FLOW_END_BIND_TO_ENCLOSING0(category_group, name, id) \
+ INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
+ category_group, name, id, TRACE_EVENT_FLAG_BIND_TO_ENCLOSING)
#define TRACE_EVENT_FLOW_END1(category_group, name, id, arg1_name, arg1_val) \
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
category_group, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
@@ -1138,6 +1141,7 @@ TRACE_EVENT_API_CLASS_EXPORT extern \
#define TRACE_EVENT_FLAG_SCOPE_EXTRA (static_cast<unsigned char>(1 << 4))
#define TRACE_EVENT_FLAG_EXPLICIT_TIMESTAMP (static_cast<unsigned char>(1 << 5))
#define TRACE_EVENT_FLAG_ASYNC_TTS (static_cast<unsigned char>(1 << 6))
+#define TRACE_EVENT_FLAG_BIND_TO_ENCLOSING (static_cast<unsigned char>(1 << 7))
#define TRACE_EVENT_FLAG_SCOPE_MASK (static_cast<unsigned char>( \
TRACE_EVENT_FLAG_SCOPE_OFFSET | TRACE_EVENT_FLAG_SCOPE_EXTRA))
diff --git a/base/trace_event/trace_event_impl.cc b/base/trace_event/trace_event_impl.cc
index 5a6b3e8..b5d4298 100644
--- a/base/trace_event/trace_event_impl.cc
+++ b/base/trace_event/trace_event_impl.cc
@@ -840,6 +840,9 @@ void TraceEvent::AppendAsJSON(
if (flags_ & TRACE_EVENT_FLAG_HAS_ID)
StringAppendF(out, ",\"id\":\"0x%" PRIx64 "\"", static_cast<uint64>(id_));
+ if (flags_ & TRACE_EVENT_FLAG_BIND_TO_ENCLOSING)
+ StringAppendF(out, ",\"bp\":\"e\"");
+
// Instant events also output their scope.
if (phase_ == TRACE_EVENT_PHASE_INSTANT) {
char scope = '?';
diff --git a/base/trace_event/trace_event_unittest.cc b/base/trace_event/trace_event_unittest.cc
index 76f9eca..796c386 100644
--- a/base/trace_event/trace_event_unittest.cc
+++ b/base/trace_event/trace_event_unittest.cc
@@ -47,6 +47,8 @@ const int kAsyncId = 5;
const char kAsyncIdStr[] = "0x5";
const int kAsyncId2 = 6;
const char kAsyncId2Str[] = "0x6";
+const int kFlowId = 7;
+const char kFlowIdStr[] = "0x7";
const char kRecordAllCategoryFilter[] = "*";
@@ -430,6 +432,12 @@ void TraceWithAllMacroVariants(WaitableEvent* task_complete_event) {
"name1", "value1",
"name2", "value2");
+ TRACE_EVENT_FLOW_BEGIN0("all", "TRACE_EVENT_FLOW_BEGIN0 call", kFlowId);
+ TRACE_EVENT_FLOW_STEP0("all", "TRACE_EVENT_FLOW_STEP0 call",
+ kFlowId, "step1");
+ TRACE_EVENT_FLOW_END_BIND_TO_ENCLOSING0("all",
+ "TRACE_EVENT_FLOW_END_BIND_TO_ENCLOSING0 call", kFlowId);
+
TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW0 call", kAsyncId, NULL);
TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW1 call", kAsyncId, "value");
TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW0 call", kAsyncId, NULL);
@@ -613,6 +621,17 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed) {
EXPECT_SUB_FIND_("name2");
EXPECT_SUB_FIND_("value2");
+ EXPECT_FIND_("TRACE_EVENT_FLOW_BEGIN0 call");
+ EXPECT_SUB_FIND_("id");
+ EXPECT_SUB_FIND_(kFlowIdStr);
+ EXPECT_FIND_("TRACE_EVENT_FLOW_STEP0 call");
+ EXPECT_SUB_FIND_("id");
+ EXPECT_SUB_FIND_(kFlowIdStr);
+ EXPECT_SUB_FIND_("step1");
+ EXPECT_FIND_("TRACE_EVENT_FLOW_END_BIND_TO_ENCLOSING0 call");
+ EXPECT_SUB_FIND_("id");
+ EXPECT_SUB_FIND_(kFlowIdStr);
+
EXPECT_FIND_("TRACE_EVENT_BEGIN_ETW0 call");
EXPECT_SUB_FIND_("id");
EXPECT_SUB_FIND_(kAsyncIdStr);
diff --git a/ui/events/latency_info.cc b/ui/events/latency_info.cc
index 54acb7f..bd233ae 100644
--- a/ui/events/latency_info.cc
+++ b/ui/events/latency_info.cc
@@ -338,7 +338,7 @@ void LatencyInfo::AddLatencyNumberWithTimestampImpl(
"data", AsTraceableData(*this));
}
- TRACE_EVENT_FLOW_END0(
+ TRACE_EVENT_FLOW_END_BIND_TO_ENCLOSING0(
"input,benchmark", "LatencyInfo.Flow", TRACE_ID_DONT_MANGLE(trace_id));
}
}