Chromium Code Reviews| 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 TraceConfig::EventFilterConfig heap_profiler_filter_config( | |
| 212 TraceLog::TraceEventFilter::kHeapProfilerPredicate); | |
| 213 heap_profiler_filter_config.AddIncludedCategory("*"); | |
| 214 heap_profiler_filter_config.AddIncludedCategory( | |
| 215 MemoryDumpManager::kTraceCategory); | |
| 216 TraceConfig::EventFilters filters; | |
| 217 filters.push_back(heap_profiler_filter_config); | |
| 218 TraceConfig filtering_trace_config; | |
| 219 filtering_trace_config.SetEventFilterConfigs(filters); | |
| 220 TraceLog::GetInstance()->SetEnabled(filtering_trace_config, | |
|
oystein (OOO til 10th of July)
2016/10/13 00:34:29
bikeshedding readability nit: Maybe a break here a
ssid
2016/10/13 17:30:54
Done.
| |
| 221 TraceLog::FILTERING_MODE); | |
| 222 } | |
| 223 | |
| 204 // If tracing was enabled before initializing MemoryDumpManager, we missed the | 224 // If tracing was enabled before initializing MemoryDumpManager, we missed the |
| 205 // OnTraceLogEnabled() event. Synthetize it so we can late-join the party. | 225 // OnTraceLogEnabled() event. Synthetize it so we can late-join the party. |
| 206 bool is_tracing_already_enabled = TraceLog::GetInstance()->IsEnabled(); | 226 bool tracing_already_enabled = TraceLog::GetInstance()->IsEnabled(); |
|
oystein (OOO til 10th of July)
2016/10/13 00:34:29
nit and not about this CL (but since you're touchi
ssid
2016/10/13 17:30:54
Um, this is done here so that we do not call OnTra
Primiano Tucci (use gerrit)
2016/10/13 19:11:24
Correct ;-)
oystein (OOO til 10th of July)
2016/10/13 19:20:18
Yep makes sense; comment still needed I think :)
| |
| 207 TRACE_EVENT0(kTraceCategory, "init"); // Add to trace-viewer category list. | |
| 208 TraceLog::GetInstance()->AddEnabledStateObserver(this); | 227 TraceLog::GetInstance()->AddEnabledStateObserver(this); |
| 209 if (is_tracing_already_enabled) | 228 if (tracing_already_enabled) |
| 210 OnTraceLogEnabled(); | 229 OnTraceLogEnabled(); |
| 211 } | 230 } |
| 212 | 231 |
| 213 void MemoryDumpManager::RegisterDumpProvider( | 232 void MemoryDumpManager::RegisterDumpProvider( |
| 214 MemoryDumpProvider* mdp, | 233 MemoryDumpProvider* mdp, |
| 215 const char* name, | 234 const char* name, |
| 216 scoped_refptr<SingleThreadTaskRunner> task_runner, | 235 scoped_refptr<SingleThreadTaskRunner> task_runner, |
| 217 MemoryDumpProvider::Options options) { | 236 MemoryDumpProvider::Options options) { |
| 218 options.dumps_on_single_thread_task_runner = true; | 237 options.dumps_on_single_thread_task_runner = true; |
| 219 RegisterDumpProviderInternal(mdp, name, std::move(task_runner), options); | 238 RegisterDumpProviderInternal(mdp, name, std::move(task_runner), options); |
| (...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 865 if (heavy_dump_rate_ > 0 && periodic_dumps_count_ % heavy_dump_rate_ == 0) | 884 if (heavy_dump_rate_ > 0 && periodic_dumps_count_ % heavy_dump_rate_ == 0) |
| 866 level_of_detail = MemoryDumpLevelOfDetail::DETAILED; | 885 level_of_detail = MemoryDumpLevelOfDetail::DETAILED; |
| 867 ++periodic_dumps_count_; | 886 ++periodic_dumps_count_; |
| 868 | 887 |
| 869 MemoryDumpManager::GetInstance()->RequestGlobalDump( | 888 MemoryDumpManager::GetInstance()->RequestGlobalDump( |
| 870 MemoryDumpType::PERIODIC_INTERVAL, level_of_detail); | 889 MemoryDumpType::PERIODIC_INTERVAL, level_of_detail); |
| 871 } | 890 } |
| 872 | 891 |
| 873 } // namespace trace_event | 892 } // namespace trace_event |
| 874 } // namespace base | 893 } // namespace base |
| OLD | NEW |