Index: base/trace_event/trace_log.cc |
diff --git a/base/trace_event/trace_log.cc b/base/trace_event/trace_log.cc |
index b7cc599187de89214a9b9d97d2a30c34b586b010..067b2499e97de8e970c740b9ac048a859fe5ebd5 100644 |
--- a/base/trace_event/trace_log.cc |
+++ b/base/trace_event/trace_log.cc |
@@ -1323,13 +1323,10 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
// 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) { |
+ if (phase == TRACE_EVENT_PHASE_BEGIN) { |
AllocationContextTracker::GetInstanceForCurrentThread() |
->PushPseudoStackFrame(name); |
} else if (phase == TRACE_EVENT_PHASE_END) { |
- // The pop for |TRACE_EVENT_PHASE_COMPLETE| events |
- // is in |TraceLog::UpdateTraceEventDuration|. |
AllocationContextTracker::GetInstanceForCurrentThread() |
->PopPseudoStackFrame(name); |
} |
@@ -1453,12 +1450,6 @@ void TraceLog::UpdateTraceEventDuration( |
console_message = |
EventToConsoleMessage(TRACE_EVENT_PHASE_END, now, trace_event); |
} |
- |
- if (base::trace_event::AllocationContextTracker::capture_enabled()) { |
- // The corresponding push is in |AddTraceEventWithThreadIdAndTimestamp|. |
- base::trace_event::AllocationContextTracker::GetInstanceForCurrentThread() |
- ->PopPseudoStackFrame(name); |
- } |
} |
if (console_message.size()) |
@@ -1724,30 +1715,41 @@ ScopedTraceBinaryEfficient::ScopedTraceBinaryEfficient( |
category_group, atomic, category_group_enabled_); |
name_ = name; |
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, |
- category_group_enabled_, |
- name, |
- trace_event_internal::kGlobalScope, // scope |
- trace_event_internal::kNoId, // id |
- static_cast<int>(base::PlatformThread::CurrentId()), // thread_id |
- base::TimeTicks::Now(), |
- trace_event_internal::kZeroNumArgs, |
- nullptr, |
- nullptr, |
- nullptr, |
- nullptr, |
- TRACE_EVENT_FLAG_NONE); |
+ (base::trace_event::TraceLog::ENABLED_FOR_HEAP_PROFILING | |
+ base::trace_event::TraceLog::ENABLED_FOR_NON_PROFILING_MODE)) { |
+ if (*category_group_enabled_ & |
+ base::trace_event::TraceLog::ENABLED_FOR_HEAP_PROFILING) { |
+ base::trace_event::AllocationContextTracker::GetInstanceForCurrentThread() |
+ ->PushPseudoStackFrame(name); |
+ } |
+ 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, category_group_enabled_, name, |
+ trace_event_internal::kGlobalScope, // scope |
+ trace_event_internal::kNoId, // id |
+ static_cast<int>(base::PlatformThread::CurrentId()), // thread_id |
+ base::TimeTicks::Now(), trace_event_internal::kZeroNumArgs, |
+ nullptr, nullptr, nullptr, nullptr, TRACE_EVENT_FLAG_NONE); |
+ } |
} |
} |
ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { |
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_); |
+ (base::trace_event::TraceLog::ENABLED_FOR_HEAP_PROFILING | |
+ base::trace_event::TraceLog::ENABLED_FOR_NON_PROFILING_MODE)) { |
+ if (*category_group_enabled_ & |
+ base::trace_event::TraceLog::ENABLED_FOR_HEAP_PROFILING) { |
+ base::trace_event::AllocationContextTracker::GetInstanceForCurrentThread() |
+ ->PopPseudoStackFrame(name_); |
+ } |
+ 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_); |
+ } |
} |
} |