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

Unified Diff: base/trace_event/trace_event.h

Issue 2381083003: The TRACE_LINK_IDS macro (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « base/trace_event/common/trace_event_common.h ('k') | base/trace_event/trace_event_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/trace_event/trace_event.h
diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h
index 4de64837161fded5fd176d1dc5136006d8521a9e..47d1924dccbdeee0010d4a4e8394d889d787cf5e 100644
--- a/base/trace_event/trace_event.h
+++ b/base/trace_event/trace_event.h
@@ -15,10 +15,13 @@
#include <string>
#include "base/atomicops.h"
+#include "base/format_macros.h"
Primiano Tucci (use gerrit) 2016/10/01 01:50:00 remember to remove the unnecessary .h once you mov
chiniforooshan 2016/10/03 18:12:19 Done.
#include "base/macros.h"
+#include "base/strings/stringprintf.h"
#include "base/time/time.h"
#include "base/trace_event/common/trace_event_common.h"
#include "base/trace_event/heap_profiler.h"
+#include "base/trace_event/trace_event_argument.h"
Primiano Tucci (use gerrit) 2016/10/01 01:50:00 Yeah please don't pull extra includes in this file
chiniforooshan 2016/10/03 18:12:19 Done.
#include "base/trace_event/trace_event_system_stats_monitor.h"
#include "base/trace_event/trace_log.h"
#include "build/build_config.h"
@@ -376,29 +379,20 @@ TRACE_EVENT_API_CLASS_EXPORT extern \
} \
} while (0)
-// This macro ignores whether the bind_id is local, global, or mangled.
-#define INTERNAL_TRACE_EVENT_ADD_BIND_IDS(category_group, name, id, bind_id, \
- ...) \
+// The linked ID will not be mangled.
+#define INTERNAL_TRACE_EVENT_ADD_LINK_IDS(category_group, name, id1, id2) \
do { \
INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \
if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \
- trace_event_internal::TraceID source_id((id)); \
+ trace_event_internal::TraceID source_id((id1)); \
unsigned int source_flags = source_id.id_flags(); \
- trace_event_internal::TraceID target_id((bind_id)); \
- if (target_id.scope() == trace_event_internal::kGlobalScope) { \
- trace_event_internal::AddTraceEvent( \
- TRACE_EVENT_PHASE_BIND_IDS, \
- INTERNAL_TRACE_EVENT_UID(category_group_enabled), \
- name, source_id.scope(), source_id.raw_id(), \
- source_flags, target_id.raw_id(), ##__VA_ARGS__); \
- } else { \
- trace_event_internal::AddTraceEvent( \
- TRACE_EVENT_PHASE_BIND_IDS, \
- INTERNAL_TRACE_EVENT_UID(category_group_enabled), \
- name, source_id.scope(), source_id.raw_id(), \
- source_flags, target_id.raw_id(), \
- "bind_scope", target_id.scope(), ##__VA_ARGS__); \
- } \
+ trace_event_internal::TraceID target_id((id2)); \
+ trace_event_internal::AddTraceEvent( \
+ TRACE_EVENT_PHASE_LINK_IDS, \
+ INTERNAL_TRACE_EVENT_UID(category_group_enabled), \
+ name, source_id.scope(), source_id.raw_id(), source_flags, \
+ trace_event_internal::kNoId, \
+ "linked_id", target_id.dict_value()); \
Primiano Tucci (use gerrit) 2016/10/01 01:50:00 don't you need a std::move here?
chiniforooshan 2016/10/03 18:12:19 It's a return value. If I actually do std::move he
} \
} while (0)
@@ -582,6 +576,39 @@ class TraceID {
const char* scope() const { return scope_; }
unsigned int id_flags() const { return id_flags_; }
+ std::unique_ptr<base::trace_event::TracedValue> dict_value() const {
caseq 2016/10/01 01:33:53 Let's move it out-of-line, it's too big.
Primiano Tucci (use gerrit) 2016/10/01 01:50:00 +1 this is definitely beyon the limits for an inli
chiniforooshan 2016/10/03 18:12:19 Done.
+ std::unique_ptr<base::trace_event::TracedValue> value(
+ new base::trace_event::TracedValue());
Primiano Tucci (use gerrit) 2016/10/01 01:50:00 makeunique
chiniforooshan 2016/10/03 18:12:19 Done.
+
+ if (scope_ != kGlobalScope)
+ value->SetString("scope", scope_);
+ switch (id_flags_) {
+ case TRACE_EVENT_FLAG_HAS_ID:
+ value->SetString(
+ "id",
+ base::StringPrintf("0x%" PRIx64, static_cast<uint64_t>(raw_id_)));
+ break;
+ case TRACE_EVENT_FLAG_HAS_GLOBAL_ID:
+ value->BeginDictionary("id2");
+ value->SetString(
+ "global",
+ base::StringPrintf("0x%" PRIx64, static_cast<uint64_t>(raw_id_)));
+ value->EndDictionary();
+ break;
+ case TRACE_EVENT_FLAG_HAS_LOCAL_ID:
+ value->BeginDictionary("id2");
+ value->SetString(
+ "local",
+ base::StringPrintf("0x%" PRIx64, static_cast<uint64_t>(raw_id_)));
+ value->EndDictionary();
+ break;
+ default:
+ NOTREACHED() << "Unrecognized ID flag";
+ }
+
+ return value;
+ }
+
private:
const char* scope_ = nullptr;
unsigned long long raw_id_;
« no previous file with comments | « base/trace_event/common/trace_event_common.h ('k') | base/trace_event/trace_event_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698