Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: base/trace_event/memory_dump_manager.cc

Issue 1467453003: [Tracing] Make heap profiler type info a string (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/atomic_sequence_num.h" 10 #include "base/atomic_sequence_num.h"
11 #include "base/base_switches.h" 11 #include "base/base_switches.h"
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
14 #include "base/thread_task_runner_handle.h" 14 #include "base/thread_task_runner_handle.h"
15 #include "base/threading/thread.h" 15 #include "base/threading/thread.h"
16 #include "base/trace_event/heap_profiler_allocation_context_tracker.h" 16 #include "base/trace_event/heap_profiler_allocation_context_tracker.h"
17 #include "base/trace_event/heap_profiler_stack_frame_deduplicator.h" 17 #include "base/trace_event/heap_profiler_stack_frame_deduplicator.h"
18 #include "base/trace_event/heap_profiler_type_name_deduplicator.h"
18 #include "base/trace_event/malloc_dump_provider.h" 19 #include "base/trace_event/malloc_dump_provider.h"
19 #include "base/trace_event/memory_dump_provider.h" 20 #include "base/trace_event/memory_dump_provider.h"
20 #include "base/trace_event/memory_dump_session_state.h" 21 #include "base/trace_event/memory_dump_session_state.h"
21 #include "base/trace_event/process_memory_dump.h" 22 #include "base/trace_event/process_memory_dump.h"
22 #include "base/trace_event/trace_event_argument.h" 23 #include "base/trace_event/trace_event_argument.h"
23 #include "build/build_config.h" 24 #include "build/build_config.h"
24 25
25 #if !defined(OS_NACL) 26 #if !defined(OS_NACL)
26 #include "base/trace_event/process_memory_totals_dump_provider.h" 27 #include "base/trace_event/process_memory_totals_dump_provider.h"
27 #endif 28 #endif
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 if (!dump_thread->Start()) { 513 if (!dump_thread->Start()) {
513 LOG(ERROR) << "Failed to start the memory-infra thread for tracing"; 514 LOG(ERROR) << "Failed to start the memory-infra thread for tracing";
514 return; 515 return;
515 } 516 }
516 517
517 AutoLock lock(lock_); 518 AutoLock lock(lock_);
518 519
519 DCHECK(delegate_); // At this point we must have a delegate. 520 DCHECK(delegate_); // At this point we must have a delegate.
520 521
521 scoped_refptr<StackFrameDeduplicator> stack_frame_deduplicator = nullptr; 522 scoped_refptr<StackFrameDeduplicator> stack_frame_deduplicator = nullptr;
523 scoped_refptr<TypeNameDeduplicator> type_name_deduplicator = nullptr;
522 524
523 if (heap_profiling_enabled_) { 525 if (heap_profiling_enabled_) {
524 // If heap profiling is enabled, the stack frame deduplicator will be in 526 // If heap profiling is enabled, the stack frame deduplicator and type name
525 // use. Add a metadata event to write its frames. 527 // deduplicator will be in use. Add a metadata events to write the frames
528 // and type IDs.
526 stack_frame_deduplicator = new StackFrameDeduplicator; 529 stack_frame_deduplicator = new StackFrameDeduplicator;
530 type_name_deduplicator = new TypeNameDeduplicator;
527 TRACE_EVENT_API_ADD_METADATA_EVENT( 531 TRACE_EVENT_API_ADD_METADATA_EVENT(
528 "stackFrames", "stackFrames", 532 "stackFrames", "stackFrames",
529 scoped_refptr<ConvertableToTraceFormat>(stack_frame_deduplicator)); 533 scoped_refptr<ConvertableToTraceFormat>(stack_frame_deduplicator));
534 TRACE_EVENT_API_ADD_METADATA_EVENT(
535 "typeNames", "typeNames",
536 scoped_refptr<ConvertableToTraceFormat>(type_name_deduplicator));
530 } 537 }
531 538
532 DCHECK(!dump_thread_); 539 DCHECK(!dump_thread_);
533 dump_thread_ = std::move(dump_thread); 540 dump_thread_ = std::move(dump_thread);
534 session_state_ = new MemoryDumpSessionState(stack_frame_deduplicator); 541 session_state_ = new MemoryDumpSessionState(stack_frame_deduplicator,
542 type_name_deduplicator);
535 543
536 for (auto it = dump_providers_.begin(); it != dump_providers_.end(); ++it) { 544 for (auto it = dump_providers_.begin(); it != dump_providers_.end(); ++it) {
537 it->disabled = false; 545 it->disabled = false;
538 it->consecutive_failures = 0; 546 it->consecutive_failures = 0;
539 } 547 }
540 548
541 subtle::NoBarrier_Store(&memory_tracing_enabled_, 1); 549 subtle::NoBarrier_Store(&memory_tracing_enabled_, 1);
542 550
543 // TODO(primiano): This is a temporary hack to disable periodic memory dumps 551 // TODO(primiano): This is a temporary hack to disable periodic memory dumps
544 // when running memory benchmarks until telemetry uses TraceConfig to 552 // when running memory benchmarks until telemetry uses TraceConfig to
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 auto iter = process_dumps.find(pid); 654 auto iter = process_dumps.find(pid);
647 if (iter == process_dumps.end()) { 655 if (iter == process_dumps.end()) {
648 scoped_ptr<ProcessMemoryDump> new_pmd(new ProcessMemoryDump(session_state)); 656 scoped_ptr<ProcessMemoryDump> new_pmd(new ProcessMemoryDump(session_state));
649 iter = process_dumps.insert(pid, std::move(new_pmd)).first; 657 iter = process_dumps.insert(pid, std::move(new_pmd)).first;
650 } 658 }
651 return iter->second; 659 return iter->second;
652 } 660 }
653 661
654 } // namespace trace_event 662 } // namespace trace_event
655 } // namespace base 663 } // namespace base
OLDNEW
« no previous file with comments | « base/trace_event/memory_allocator_dump_unittest.cc ('k') | base/trace_event/memory_dump_session_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698