Index: base/trace_event/trace_log.cc |
diff --git a/base/trace_event/trace_log.cc b/base/trace_event/trace_log.cc |
index 3b1d2c9bb2f5dc5ca05100010a96ac6e07bdcfd5..b7cc599187de89214a9b9d97d2a30c34b586b010 100644 |
--- a/base/trace_event/trace_log.cc |
+++ b/base/trace_event/trace_log.cc |
@@ -461,6 +461,10 @@ void TraceLog::UpdateCategoryGroupEnabledFlag(size_t category_index) { |
enabled_flag |= ENABLED_FOR_EVENT_CALLBACK; |
} |
+ if (AllocationContextTracker::capture_enabled()) { |
+ enabled_flag |= ENABLED_FOR_HEAP_PROFILING; |
+ } |
+ |
#if defined(OS_WIN) |
if (base::trace_event::TraceEventETWExport::IsCategoryGroupEnabled( |
category_group)) { |
@@ -1168,7 +1172,7 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
scoped_ptr<ConvertableToTraceFormat>* convertable_values, |
unsigned int flags) { |
TraceEventHandle handle = {0, 0, 0}; |
- if (!*category_group_enabled) |
+ if (!(*category_group_enabled & ENABLED_FOR_NON_PROFILING_MODE)) |
return handle; |
// Avoid re-entrance of AddTraceEvent. This may happen in GPU process when |
@@ -1315,17 +1319,20 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
} |
// TODO(primiano): Add support for events with copied name crbug.com/581078 |
+ // TODO(ssid): Move push to ScopedTracer after adding profiling support in |
+ // Blink and skia crbug.com/598426. |
if (!(flags & TRACE_EVENT_FLAG_COPY)) { |
if (AllocationContextTracker::capture_enabled()) { |
if (phase == TRACE_EVENT_PHASE_BEGIN || |
phase == TRACE_EVENT_PHASE_COMPLETE) { |
AllocationContextTracker::GetInstanceForCurrentThread() |
->PushPseudoStackFrame(name); |
- } else if (phase == TRACE_EVENT_PHASE_END) |
+ } else if (phase == TRACE_EVENT_PHASE_END) { |
// The pop for |TRACE_EVENT_PHASE_COMPLETE| events |
// is in |TraceLog::UpdateTraceEventDuration|. |
AllocationContextTracker::GetInstanceForCurrentThread() |
->PopPseudoStackFrame(name); |
+ } |
} |
} |
@@ -1409,7 +1416,7 @@ void TraceLog::UpdateTraceEventDuration( |
const char* name, |
TraceEventHandle handle) { |
char category_group_enabled_local = *category_group_enabled; |
- if (!category_group_enabled_local) |
+ if (!(category_group_enabled_local & ENABLED_FOR_NON_PROFILING_MODE)) |
return; |
// Avoid re-entrance of AddTraceEvent. This may happen in GPU process when |
@@ -1716,7 +1723,8 @@ ScopedTraceBinaryEfficient::ScopedTraceBinaryEfficient( |
INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO_CUSTOM_VARIABLES( |
category_group, atomic, category_group_enabled_); |
name_ = name; |
- if (*category_group_enabled_) { |
+ if (*category_group_enabled_ & |
+ base::trace_event::TraceLog::ENABLED_FOR_NON_PROFILING_MODE) { |
event_handle_ = |
TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
TRACE_EVENT_PHASE_COMPLETE, |
@@ -1736,7 +1744,8 @@ ScopedTraceBinaryEfficient::ScopedTraceBinaryEfficient( |
} |
ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { |
- if (*category_group_enabled_) { |
+ if (*category_group_enabled_ & |
+ base::trace_event::TraceLog::ENABLED_FOR_NON_PROFILING_MODE) { |
TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, |
event_handle_); |
} |