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

Unified Diff: third_party/WebKit/Source/platform/TraceEvent.h

Issue 1850603002: [tracing] Use trace event profiling for heap profiling Base URL: https://chromium.googlesource.com/chromium/src.git@all_categories
Patch Set: Created 4 years, 9 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 | « third_party/WebKit/Source/platform/EventTracer.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/platform/TraceEvent.h
diff --git a/third_party/WebKit/Source/platform/TraceEvent.h b/third_party/WebKit/Source/platform/TraceEvent.h
index b2d51c05913d706cfeadaa873c662fbde7eee251..c423de8db705b67cd749c4472f8417bd8e8de157 100644
--- a/third_party/WebKit/Source/platform/TraceEvent.h
+++ b/third_party/WebKit/Source/platform/TraceEvent.h
@@ -170,32 +170,44 @@
#define INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, ...) \
INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category); \
blink::TraceEvent::ScopedTracer INTERNALTRACEEVENTUID(scopedTracer); \
- if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \
- blink::TraceEvent::TraceEventHandle h = \
- blink::TraceEvent::addTraceEvent( \
- TRACE_EVENT_PHASE_COMPLETE, \
- INTERNALTRACEEVENTUID(categoryGroupEnabled), name, \
- blink::TraceEvent::kGlobalScope, blink::TraceEvent::noEventId, \
- TRACE_EVENT_FLAG_NONE, ##__VA_ARGS__); \
- INTERNALTRACEEVENTUID(scopedTracer).initialize( \
- INTERNALTRACEEVENTUID(categoryGroupEnabled), name, h); \
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_TRACING()) { \
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \
+ blink::TraceEvent::TraceEventHandle h = \
+ blink::TraceEvent::addTraceEvent( \
+ TRACE_EVENT_PHASE_COMPLETE, \
+ INTERNALTRACEEVENTUID(categoryGroupEnabled), name, \
+ blink::TraceEvent::kGlobalScope, blink::TraceEvent::noEventId, \
+ TRACE_EVENT_FLAG_NONE, ##__VA_ARGS__); \
+ INTERNALTRACEEVENTUID(scopedTracer).initialize( \
+ INTERNALTRACEEVENTUID(categoryGroupEnabled), name, h); \
+ } \
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_PROFILING()) { \
+ INTERNALTRACEEVENTUID(scopedTracer) \
+ .initializeForHeapProfiling(name, TRACE_EVENT_FLAG_NONE); \
+ } \
}
#define INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW(category, name, bindId, flowFlags, ...) \
INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category); \
blink::TraceEvent::ScopedTracer INTERNALTRACEEVENTUID(scopedTracer); \
- if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \
- unsigned traceEventFlags = flowFlags; \
- blink::TraceEvent::TraceID traceEventBindId(bindId, &traceEventFlags); \
- blink::TraceEvent::TraceEventHandle h = \
- blink::TraceEvent::addTraceEvent( \
- TRACE_EVENT_PHASE_COMPLETE, \
- INTERNALTRACEEVENTUID(categoryGroupEnabled), name, \
- blink::TraceEvent::kGlobalScope, blink::TraceEvent::noEventId, \
- traceEventBindId.data(), \
- EventTracer::systemTraceTime(), traceEventFlags, ##__VA_ARGS__); \
- INTERNALTRACEEVENTUID(scopedTracer).initialize( \
- INTERNALTRACEEVENTUID(categoryGroupEnabled), name, h); \
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_TRACING()) { \
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \
+ unsigned traceEventFlags = flowFlags; \
+ blink::TraceEvent::TraceID traceEventBindId(bindId, &traceEventFlags); \
+ blink::TraceEvent::TraceEventHandle h = \
+ blink::TraceEvent::addTraceEvent( \
+ TRACE_EVENT_PHASE_COMPLETE, \
+ INTERNALTRACEEVENTUID(categoryGroupEnabled), name, \
+ blink::TraceEvent::kGlobalScope, blink::TraceEvent::noEventId, \
+ traceEventBindId.data(), \
+ EventTracer::systemTraceTime(), traceEventFlags, ##__VA_ARGS__); \
+ INTERNALTRACEEVENTUID(scopedTracer).initialize( \
+ INTERNALTRACEEVENTUID(categoryGroupEnabled), name, h); \
+ } \
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_PROFILING()) { \
+ INTERNALTRACEEVENTUID(scopedTracer) \
+ .initializeForHeapProfiling(name, TRACE_EVENT_FLAG_NONE); \
+ } \
}
// Implementation detail: internal macro to create static category and add
@@ -269,9 +281,18 @@
// These values must be in sync with base::debug::TraceLog::CategoryGroupEnabledFlags.
#define ENABLED_FOR_RECORDING (1 << 0)
#define ENABLED_FOR_EVENT_CALLBACK (1 << 2)
+#define ENABLED_FOR_ETW_EXPORT (1 << 3)
+#define ENABLED_FOR_PROFILING (1 << 4)
+#define ENABLED_FOR_NON_PROFILING_MODE (ENABLED_FOR_RECORDING | ENABLED_FOR_EVENT_CALLBACK | ENABLED_FOR_ETW_EXPORT)
+
+#define INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_TRACING() \
+ (*INTERNALTRACEEVENTUID(categoryGroupEnabled) & (ENABLED_FOR_PROFILING | ENABLED_FOR_NON_PROFILING_MODE))
#define INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE() \
- (*INTERNALTRACEEVENTUID(categoryGroupEnabled) & (ENABLED_FOR_RECORDING | ENABLED_FOR_EVENT_CALLBACK))
+ (*INTERNALTRACEEVENTUID(categoryGroupEnabled) & ENABLED_FOR_NON_PROFILING_MODE)
+
+#define INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_PROFILING() \
+ (*INTERNALTRACEEVENTUID(categoryGroupEnabled) & ENABLED_FOR_PROFILING)
#define INTERNAL_TRACE_MEMORY(category, name)
@@ -601,8 +622,12 @@ public:
ScopedTracer() : m_pdata(0) { }
~ScopedTracer()
{
- if (m_pdata && *m_pdata->categoryGroupEnabled)
- TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(m_data.categoryGroupEnabled, m_data.name, m_data.eventHandle);
+ if (m_data.name) {
+ if (m_data.initializedForProfiling)
+ blink::EventTracer::pushPseudoStackFrame(m_data.name);
+ if (m_pdata && *m_pdata->categoryGroupEnabled)
+ TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(m_data.categoryGroupEnabled, m_data.name, m_data.eventHandle);
+ }
}
void initialize(const unsigned char* categoryGroupEnabled, const char* name, TraceEventHandle eventHandle)
@@ -613,6 +638,15 @@ public:
m_pdata = &m_data;
}
+ void initializeForHeapProfiling(const char* name, unsigned flags)
+ {
+ if (!(flags & TRACE_EVENT_FLAG_COPY)) {
+ m_data.initializedForProfiling = true;
+ m_data.name = name;
+ blink::EventTracer::pushPseudoStackFrame(name);
+ }
+ }
+
private:
// This Data struct workaround is to avoid initializing all the members
// in Data during construction of this object, since this object is always
@@ -624,6 +658,7 @@ private:
const unsigned char* categoryGroupEnabled;
const char* name;
TraceEventHandle eventHandle;
+ bool initializedForProfiling;
};
Data* m_pdata;
Data m_data;
« no previous file with comments | « third_party/WebKit/Source/platform/EventTracer.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698