| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/trace_event/memory_dump_manager.h" | 5 #include "base/trace_event/memory_dump_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/allocator/features.h" | 10 #include "base/allocator/features.h" |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 // Enable the core dump providers. | 194 // Enable the core dump providers. |
| 195 #if defined(MALLOC_MEMORY_TRACING_SUPPORTED) | 195 #if defined(MALLOC_MEMORY_TRACING_SUPPORTED) |
| 196 RegisterDumpProvider(MallocDumpProvider::GetInstance(), "Malloc", nullptr); | 196 RegisterDumpProvider(MallocDumpProvider::GetInstance(), "Malloc", nullptr); |
| 197 #endif | 197 #endif |
| 198 | 198 |
| 199 #if defined(OS_ANDROID) | 199 #if defined(OS_ANDROID) |
| 200 RegisterDumpProvider(JavaHeapDumpProvider::GetInstance(), "JavaHeap", | 200 RegisterDumpProvider(JavaHeapDumpProvider::GetInstance(), "JavaHeap", |
| 201 nullptr); | 201 nullptr); |
| 202 #endif | 202 #endif |
| 203 | 203 |
| 204 TRACE_EVENT_WARMUP_CATEGORY(kTraceCategory); | |
| 205 | |
| 206 // TODO(ssid): This should be done in EnableHeapProfiling so that we capture | |
| 207 // more allocations (crbug.com/625170). | |
| 208 if (AllocationContextTracker::capture_mode() == | |
| 209 AllocationContextTracker::CaptureMode::PSEUDO_STACK && | |
| 210 !(TraceLog::GetInstance()->enabled_modes() & TraceLog::FILTERING_MODE)) { | |
| 211 // Create trace config with heap profiling filter. | |
| 212 TraceConfig::EventFilterConfig heap_profiler_filter_config( | |
| 213 TraceLog::TraceEventFilter::kHeapProfilerPredicate); | |
| 214 heap_profiler_filter_config.AddIncludedCategory("*"); | |
| 215 heap_profiler_filter_config.AddIncludedCategory( | |
| 216 MemoryDumpManager::kTraceCategory); | |
| 217 TraceConfig::EventFilters filters; | |
| 218 filters.push_back(heap_profiler_filter_config); | |
| 219 TraceConfig filtering_trace_config; | |
| 220 filtering_trace_config.SetEventFilters(filters); | |
| 221 | |
| 222 TraceLog::GetInstance()->SetEnabled(filtering_trace_config, | |
| 223 TraceLog::FILTERING_MODE); | |
| 224 } | |
| 225 | |
| 226 // If tracing was enabled before initializing MemoryDumpManager, we missed the | 204 // If tracing was enabled before initializing MemoryDumpManager, we missed the |
| 227 // OnTraceLogEnabled() event. Synthetize it so we can late-join the party. | 205 // OnTraceLogEnabled() event. Synthetize it so we can late-join the party. |
| 228 // IsEnabled is called before adding observer to avoid calling | |
| 229 // OnTraceLogEnabled twice. | |
| 230 bool is_tracing_already_enabled = TraceLog::GetInstance()->IsEnabled(); | 206 bool is_tracing_already_enabled = TraceLog::GetInstance()->IsEnabled(); |
| 207 TRACE_EVENT0(kTraceCategory, "init"); // Add to trace-viewer category list. |
| 231 TraceLog::GetInstance()->AddEnabledStateObserver(this); | 208 TraceLog::GetInstance()->AddEnabledStateObserver(this); |
| 232 if (is_tracing_already_enabled) | 209 if (is_tracing_already_enabled) |
| 233 OnTraceLogEnabled(); | 210 OnTraceLogEnabled(); |
| 234 } | 211 } |
| 235 | 212 |
| 236 void MemoryDumpManager::RegisterDumpProvider( | 213 void MemoryDumpManager::RegisterDumpProvider( |
| 237 MemoryDumpProvider* mdp, | 214 MemoryDumpProvider* mdp, |
| 238 const char* name, | 215 const char* name, |
| 239 scoped_refptr<SingleThreadTaskRunner> task_runner, | 216 scoped_refptr<SingleThreadTaskRunner> task_runner, |
| 240 MemoryDumpProvider::Options options) { | 217 MemoryDumpProvider::Options options) { |
| (...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 888 if (heavy_dump_rate_ > 0 && periodic_dumps_count_ % heavy_dump_rate_ == 0) | 865 if (heavy_dump_rate_ > 0 && periodic_dumps_count_ % heavy_dump_rate_ == 0) |
| 889 level_of_detail = MemoryDumpLevelOfDetail::DETAILED; | 866 level_of_detail = MemoryDumpLevelOfDetail::DETAILED; |
| 890 ++periodic_dumps_count_; | 867 ++periodic_dumps_count_; |
| 891 | 868 |
| 892 MemoryDumpManager::GetInstance()->RequestGlobalDump( | 869 MemoryDumpManager::GetInstance()->RequestGlobalDump( |
| 893 MemoryDumpType::PERIODIC_INTERVAL, level_of_detail); | 870 MemoryDumpType::PERIODIC_INTERVAL, level_of_detail); |
| 894 } | 871 } |
| 895 | 872 |
| 896 } // namespace trace_event | 873 } // namespace trace_event |
| 897 } // namespace base | 874 } // namespace base |
| OLD | NEW |