| 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_);
|
| }
|
|
|