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

Side by Side Diff: base/tracked_objects_unittest.cc

Issue 2488073002: Reuse ThreadData instances associated with terminated named threads. (Closed)
Patch Set: rebase Created 4 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
« no previous file with comments | « base/tracked_objects.cc ('k') | chrome/browser/task_profiler/task_profiler_data_serializer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // Test of classes in the tracked_objects.h classes. 5 // Test of classes in the tracked_objects.h classes.
6 6
7 #include "base/tracked_objects.h" 7 #include "base/tracked_objects.h"
8 8
9 #include <stddef.h> 9 #include <stddef.h>
10 #include <stdint.h> 10 #include <stdint.h>
11 11
12 #include <memory> 12 #include <memory>
13 13
14 #include "base/macros.h"
14 #include "base/process/process_handle.h" 15 #include "base/process/process_handle.h"
16 #include "base/strings/stringprintf.h"
17 #include "base/threading/thread.h"
15 #include "base/time/time.h" 18 #include "base/time/time.h"
16 #include "base/tracking_info.h" 19 #include "base/tracking_info.h"
17 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
18 21
19 const int kLineNumber = 1776; 22 const int kLineNumber = 1776;
20 const char kFile[] = "FixedUnitTestFileName"; 23 const char kFile[] = "FixedUnitTestFileName";
21 const char kWorkerThreadName[] = "WorkerThread-1"; 24 const char kWorkerThreadName[] = "WorkerThread-*";
22 const char kMainThreadName[] = "SomeMainThreadName"; 25 const char kMainThreadName[] = "SomeMainThreadName";
23 const char kStillAlive[] = "Still_Alive"; 26 const char kStillAlive[] = "Still_Alive";
24 27
25 const int32_t kAllocOps = 23; 28 const int32_t kAllocOps = 23;
26 const int32_t kFreeOps = 27; 29 const int32_t kFreeOps = 27;
27 const int32_t kAllocatedBytes = 59934; 30 const int32_t kAllocatedBytes = 59934;
28 const int32_t kFreedBytes = 2 * kAllocatedBytes; 31 const int32_t kFreedBytes = 2 * kAllocatedBytes;
29 const int32_t kAllocOverheadBytes = kAllocOps * 8; 32 const int32_t kAllocOverheadBytes = kAllocOps * 8;
30 const int32_t kMaxAllocatedBytes = kAllocatedBytes / 2; 33 const int32_t kMaxAllocatedBytes = kAllocatedBytes / 2;
31 34
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 const ProcessDataPhaseSnapshot& process_data_phase = it->second; 88 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
86 89
87 ASSERT_EQ(1u, process_data_phase.tasks.size()); 90 ASSERT_EQ(1u, process_data_phase.tasks.size());
88 91
89 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); 92 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name);
90 EXPECT_EQ(function_name, 93 EXPECT_EQ(function_name,
91 process_data_phase.tasks[0].birth.location.function_name); 94 process_data_phase.tasks[0].birth.location.function_name);
92 EXPECT_EQ(kLineNumber, 95 EXPECT_EQ(kLineNumber,
93 process_data_phase.tasks[0].birth.location.line_number); 96 process_data_phase.tasks[0].birth.location.line_number);
94 97
95 EXPECT_EQ(birth_thread, process_data_phase.tasks[0].birth.thread_name); 98 EXPECT_EQ(birth_thread,
99 process_data_phase.tasks[0].birth.sanitized_thread_name);
96 100
97 EXPECT_EQ(count, process_data_phase.tasks[0].death_data.count); 101 EXPECT_EQ(count, process_data_phase.tasks[0].death_data.count);
98 EXPECT_EQ(count * run_ms, 102 EXPECT_EQ(count * run_ms,
99 process_data_phase.tasks[0].death_data.run_duration_sum); 103 process_data_phase.tasks[0].death_data.run_duration_sum);
100 EXPECT_EQ(run_ms, process_data_phase.tasks[0].death_data.run_duration_max); 104 EXPECT_EQ(run_ms, process_data_phase.tasks[0].death_data.run_duration_max);
101 EXPECT_EQ(run_ms, 105 EXPECT_EQ(run_ms,
102 process_data_phase.tasks[0].death_data.run_duration_sample); 106 process_data_phase.tasks[0].death_data.run_duration_sample);
103 EXPECT_EQ(count * queue_ms, 107 EXPECT_EQ(count * queue_ms,
104 process_data_phase.tasks[0].death_data.queue_duration_sum); 108 process_data_phase.tasks[0].death_data.queue_duration_sum);
105 EXPECT_EQ(queue_ms, 109 EXPECT_EQ(queue_ms,
106 process_data_phase.tasks[0].death_data.queue_duration_max); 110 process_data_phase.tasks[0].death_data.queue_duration_max);
107 EXPECT_EQ(queue_ms, 111 EXPECT_EQ(queue_ms,
108 process_data_phase.tasks[0].death_data.queue_duration_sample); 112 process_data_phase.tasks[0].death_data.queue_duration_sample);
109 113
110 EXPECT_EQ(death_thread, process_data_phase.tasks[0].death_thread_name); 114 EXPECT_EQ(death_thread,
115 process_data_phase.tasks[0].death_sanitized_thread_name);
111 116
112 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 117 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
113 } 118 }
114 119
115 // Sets time that will be returned by ThreadData::Now(). 120 // Sets time that will be returned by ThreadData::Now().
116 static void SetTestTime(unsigned int test_time) { test_time_ = test_time; } 121 static void SetTestTime(unsigned int test_time) { test_time_ = test_time; }
117 122
123 int GetNumThreadData() {
124 int num_thread_data = 0;
125 ThreadData* current = ThreadData::first();
126 while (current) {
127 ++num_thread_data;
128 current = current->next();
129 }
130 return num_thread_data;
131 }
132
118 private: 133 private:
119 // Returns test time in milliseconds. 134 // Returns test time in milliseconds.
120 static unsigned int GetTestTime() { return test_time_; } 135 static unsigned int GetTestTime() { return test_time_; }
121 136
122 // Test time in milliseconds. 137 // Test time in milliseconds.
123 static unsigned int test_time_; 138 static unsigned int test_time_;
124 }; 139 };
125 140
126 // static 141 // static
127 unsigned int TrackedObjectsTest::test_time_; 142 unsigned int TrackedObjectsTest::test_time_;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 ASSERT_EQ(1u, process_data.phased_snapshots.size()); 238 ASSERT_EQ(1u, process_data.phased_snapshots.size());
224 auto it = process_data.phased_snapshots.find(0); 239 auto it = process_data.phased_snapshots.find(0);
225 ASSERT_TRUE(it != process_data.phased_snapshots.end()); 240 ASSERT_TRUE(it != process_data.phased_snapshots.end());
226 const ProcessDataPhaseSnapshot& process_data_phase = it->second; 241 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
227 ASSERT_EQ(1u, process_data_phase.tasks.size()); 242 ASSERT_EQ(1u, process_data_phase.tasks.size());
228 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); 243 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name);
229 EXPECT_EQ(kFunction, 244 EXPECT_EQ(kFunction,
230 process_data_phase.tasks[0].birth.location.function_name); 245 process_data_phase.tasks[0].birth.location.function_name);
231 EXPECT_EQ(kLineNumber, 246 EXPECT_EQ(kLineNumber,
232 process_data_phase.tasks[0].birth.location.line_number); 247 process_data_phase.tasks[0].birth.location.line_number);
233 EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].birth.thread_name); 248 EXPECT_EQ(kWorkerThreadName,
249 process_data_phase.tasks[0].birth.sanitized_thread_name);
234 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count); 250 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count);
235 EXPECT_EQ(time_elapsed, 251 EXPECT_EQ(time_elapsed,
236 process_data_phase.tasks[0].death_data.run_duration_sum); 252 process_data_phase.tasks[0].death_data.run_duration_sum);
237 EXPECT_EQ(time_elapsed, 253 EXPECT_EQ(time_elapsed,
238 process_data_phase.tasks[0].death_data.run_duration_max); 254 process_data_phase.tasks[0].death_data.run_duration_max);
239 EXPECT_EQ(time_elapsed, 255 EXPECT_EQ(time_elapsed,
240 process_data_phase.tasks[0].death_data.run_duration_sample); 256 process_data_phase.tasks[0].death_data.run_duration_sample);
241 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sum); 257 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sum);
242 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_max); 258 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_max);
243 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sample); 259 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sample);
244 EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].death_thread_name); 260 EXPECT_EQ(kWorkerThreadName,
261 process_data_phase.tasks[0].death_sanitized_thread_name);
245 } 262 }
246 263
247 TEST_F(TrackedObjectsTest, DeathDataTestRecordDurations) { 264 TEST_F(TrackedObjectsTest, DeathDataTestRecordDurations) {
248 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); 265 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE);
249 266
250 std::unique_ptr<DeathData> data(new DeathData()); 267 std::unique_ptr<DeathData> data(new DeathData());
251 ASSERT_NE(data, nullptr); 268 ASSERT_NE(data, nullptr);
252 EXPECT_EQ(data->run_duration_sum(), 0); 269 EXPECT_EQ(data->run_duration_sum(), 0);
253 EXPECT_EQ(data->run_duration_max(), 0); 270 EXPECT_EQ(data->run_duration_max(), 0);
254 EXPECT_EQ(data->run_duration_sample(), 0); 271 EXPECT_EQ(data->run_duration_sample(), 0);
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second; 669 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second;
653 670
654 ASSERT_EQ(1u, process_data_phase0.tasks.size()); 671 ASSERT_EQ(1u, process_data_phase0.tasks.size());
655 672
656 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name); 673 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name);
657 EXPECT_EQ(kFunction, 674 EXPECT_EQ(kFunction,
658 process_data_phase0.tasks[0].birth.location.function_name); 675 process_data_phase0.tasks[0].birth.location.function_name);
659 EXPECT_EQ(kLineNumber, 676 EXPECT_EQ(kLineNumber,
660 process_data_phase0.tasks[0].birth.location.line_number); 677 process_data_phase0.tasks[0].birth.location.line_number);
661 678
662 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].birth.thread_name); 679 EXPECT_EQ(kMainThreadName,
680 process_data_phase0.tasks[0].birth.sanitized_thread_name);
663 681
664 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count); 682 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count);
665 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sum); 683 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sum);
666 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_max); 684 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_max);
667 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sample); 685 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sample);
668 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sum); 686 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sum);
669 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_max); 687 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_max);
670 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sample); 688 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sample);
671 689
672 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].death_thread_name); 690 EXPECT_EQ(kMainThreadName,
691 process_data_phase0.tasks[0].death_sanitized_thread_name);
673 692
674 auto it1 = process_data.phased_snapshots.find(1); 693 auto it1 = process_data.phased_snapshots.find(1);
675 ASSERT_TRUE(it1 != process_data.phased_snapshots.end()); 694 ASSERT_TRUE(it1 != process_data.phased_snapshots.end());
676 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; 695 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second;
677 696
678 ASSERT_EQ(1u, process_data_phase1.tasks.size()); 697 ASSERT_EQ(1u, process_data_phase1.tasks.size());
679 698
680 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name); 699 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name);
681 EXPECT_EQ(kFunction, 700 EXPECT_EQ(kFunction,
682 process_data_phase1.tasks[0].birth.location.function_name); 701 process_data_phase1.tasks[0].birth.location.function_name);
683 EXPECT_EQ(kLineNumber, 702 EXPECT_EQ(kLineNumber,
684 process_data_phase1.tasks[0].birth.location.line_number); 703 process_data_phase1.tasks[0].birth.location.line_number);
685 704
686 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].birth.thread_name); 705 EXPECT_EQ(kMainThreadName,
706 process_data_phase1.tasks[0].birth.sanitized_thread_name);
687 707
688 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count); 708 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count);
689 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_sum); 709 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_sum);
690 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_max); 710 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_max);
691 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_sample); 711 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_sample);
692 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_sum); 712 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_sum);
693 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_max); 713 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_max);
694 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_sample); 714 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_sample);
695 715
696 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].death_thread_name); 716 EXPECT_EQ(kMainThreadName,
717 process_data_phase1.tasks[0].death_sanitized_thread_name);
697 718
698 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 719 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
699 } 720 }
700 721
701 TEST_F(TrackedObjectsTest, ThreePhases) { 722 TEST_F(TrackedObjectsTest, ThreePhases) {
702 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); 723 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE);
703 724
704 const char kFunction[] = "ThreePhases"; 725 const char kFunction[] = "ThreePhases";
705 Location location(kFunction, kFile, kLineNumber, NULL); 726 Location location(kFunction, kFile, kLineNumber, NULL);
706 727
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second; 790 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second;
770 791
771 ASSERT_EQ(1u, process_data_phase0.tasks.size()); 792 ASSERT_EQ(1u, process_data_phase0.tasks.size());
772 793
773 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name); 794 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name);
774 EXPECT_EQ(kFunction, 795 EXPECT_EQ(kFunction,
775 process_data_phase0.tasks[0].birth.location.function_name); 796 process_data_phase0.tasks[0].birth.location.function_name);
776 EXPECT_EQ(kLineNumber, 797 EXPECT_EQ(kLineNumber,
777 process_data_phase0.tasks[0].birth.location.line_number); 798 process_data_phase0.tasks[0].birth.location.line_number);
778 799
779 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].birth.thread_name); 800 EXPECT_EQ(kMainThreadName,
801 process_data_phase0.tasks[0].birth.sanitized_thread_name);
780 802
781 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count); 803 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count);
782 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_sum); 804 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_sum);
783 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_max); 805 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_max);
784 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_sample); 806 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_sample);
785 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_sum); 807 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_sum);
786 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_max); 808 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_max);
787 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_sample); 809 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_sample);
788 810
789 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].death_thread_name); 811 EXPECT_EQ(kMainThreadName,
812 process_data_phase0.tasks[0].death_sanitized_thread_name);
790 813
791 auto it1 = process_data.phased_snapshots.find(1); 814 auto it1 = process_data.phased_snapshots.find(1);
792 ASSERT_TRUE(it1 != process_data.phased_snapshots.end()); 815 ASSERT_TRUE(it1 != process_data.phased_snapshots.end());
793 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; 816 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second;
794 817
795 ASSERT_EQ(1u, process_data_phase1.tasks.size()); 818 ASSERT_EQ(1u, process_data_phase1.tasks.size());
796 819
797 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name); 820 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name);
798 EXPECT_EQ(kFunction, 821 EXPECT_EQ(kFunction,
799 process_data_phase1.tasks[0].birth.location.function_name); 822 process_data_phase1.tasks[0].birth.location.function_name);
800 EXPECT_EQ(kLineNumber, 823 EXPECT_EQ(kLineNumber,
801 process_data_phase1.tasks[0].birth.location.line_number); 824 process_data_phase1.tasks[0].birth.location.line_number);
802 825
803 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].birth.thread_name); 826 EXPECT_EQ(kMainThreadName,
827 process_data_phase1.tasks[0].birth.sanitized_thread_name);
804 828
805 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count); 829 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count);
806 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_sum); 830 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_sum);
807 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_max); 831 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_max);
808 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_sample); 832 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_sample);
809 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_sum); 833 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_sum);
810 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_max); 834 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_max);
811 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_sample); 835 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_sample);
812 836
813 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].death_thread_name); 837 EXPECT_EQ(kMainThreadName,
838 process_data_phase1.tasks[0].death_sanitized_thread_name);
814 839
815 auto it2 = process_data.phased_snapshots.find(2); 840 auto it2 = process_data.phased_snapshots.find(2);
816 ASSERT_TRUE(it2 != process_data.phased_snapshots.end()); 841 ASSERT_TRUE(it2 != process_data.phased_snapshots.end());
817 const ProcessDataPhaseSnapshot& process_data_phase2 = it2->second; 842 const ProcessDataPhaseSnapshot& process_data_phase2 = it2->second;
818 843
819 ASSERT_EQ(1u, process_data_phase2.tasks.size()); 844 ASSERT_EQ(1u, process_data_phase2.tasks.size());
820 845
821 EXPECT_EQ(kFile, process_data_phase2.tasks[0].birth.location.file_name); 846 EXPECT_EQ(kFile, process_data_phase2.tasks[0].birth.location.file_name);
822 EXPECT_EQ(kFunction, 847 EXPECT_EQ(kFunction,
823 process_data_phase2.tasks[0].birth.location.function_name); 848 process_data_phase2.tasks[0].birth.location.function_name);
824 EXPECT_EQ(kLineNumber, 849 EXPECT_EQ(kLineNumber,
825 process_data_phase2.tasks[0].birth.location.line_number); 850 process_data_phase2.tasks[0].birth.location.line_number);
826 851
827 EXPECT_EQ(kMainThreadName, process_data_phase2.tasks[0].birth.thread_name); 852 EXPECT_EQ(kMainThreadName,
853 process_data_phase2.tasks[0].birth.sanitized_thread_name);
828 854
829 EXPECT_EQ(1, process_data_phase2.tasks[0].death_data.count); 855 EXPECT_EQ(1, process_data_phase2.tasks[0].death_data.count);
830 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_sum); 856 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_sum);
831 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_max); 857 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_max);
832 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_sample); 858 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_sample);
833 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_sum); 859 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_sum);
834 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_max); 860 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_max);
835 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_sample); 861 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_sample);
836 862
837 EXPECT_EQ(kMainThreadName, process_data_phase2.tasks[0].death_thread_name); 863 EXPECT_EQ(kMainThreadName,
864 process_data_phase2.tasks[0].death_sanitized_thread_name);
838 865
839 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 866 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
840 } 867 }
841 868
842 TEST_F(TrackedObjectsTest, TwoPhasesSecondEmpty) { 869 TEST_F(TrackedObjectsTest, TwoPhasesSecondEmpty) {
843 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); 870 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE);
844 871
845 const char kFunction[] = "TwoPhasesSecondEmpty"; 872 const char kFunction[] = "TwoPhasesSecondEmpty";
846 Location location(kFunction, kFile, kLineNumber, NULL); 873 Location location(kFunction, kFile, kLineNumber, NULL);
847 ThreadData::InitializeThreadContext(kMainThreadName); 874 ThreadData::InitializeThreadContext(kMainThreadName);
(...skipping 26 matching lines...) Expand all
874 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second; 901 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second;
875 902
876 ASSERT_EQ(1u, process_data_phase0.tasks.size()); 903 ASSERT_EQ(1u, process_data_phase0.tasks.size());
877 904
878 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name); 905 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name);
879 EXPECT_EQ(kFunction, 906 EXPECT_EQ(kFunction,
880 process_data_phase0.tasks[0].birth.location.function_name); 907 process_data_phase0.tasks[0].birth.location.function_name);
881 EXPECT_EQ(kLineNumber, 908 EXPECT_EQ(kLineNumber,
882 process_data_phase0.tasks[0].birth.location.line_number); 909 process_data_phase0.tasks[0].birth.location.line_number);
883 910
884 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].birth.thread_name); 911 EXPECT_EQ(kMainThreadName,
912 process_data_phase0.tasks[0].birth.sanitized_thread_name);
885 913
886 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count); 914 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count);
887 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sum); 915 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sum);
888 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_max); 916 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_max);
889 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sample); 917 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sample);
890 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sum); 918 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sum);
891 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_max); 919 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_max);
892 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sample); 920 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sample);
893 921
894 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].death_thread_name); 922 EXPECT_EQ(kMainThreadName,
923 process_data_phase0.tasks[0].death_sanitized_thread_name);
895 924
896 auto it1 = process_data.phased_snapshots.find(1); 925 auto it1 = process_data.phased_snapshots.find(1);
897 ASSERT_TRUE(it1 != process_data.phased_snapshots.end()); 926 ASSERT_TRUE(it1 != process_data.phased_snapshots.end());
898 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; 927 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second;
899 928
900 ASSERT_EQ(0u, process_data_phase1.tasks.size()); 929 ASSERT_EQ(0u, process_data_phase1.tasks.size());
901 930
902 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 931 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
903 } 932 }
904 933
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; 966 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second;
938 967
939 ASSERT_EQ(1u, process_data_phase1.tasks.size()); 968 ASSERT_EQ(1u, process_data_phase1.tasks.size());
940 969
941 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name); 970 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name);
942 EXPECT_EQ(kFunction, 971 EXPECT_EQ(kFunction,
943 process_data_phase1.tasks[0].birth.location.function_name); 972 process_data_phase1.tasks[0].birth.location.function_name);
944 EXPECT_EQ(kLineNumber, 973 EXPECT_EQ(kLineNumber,
945 process_data_phase1.tasks[0].birth.location.line_number); 974 process_data_phase1.tasks[0].birth.location.line_number);
946 975
947 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].birth.thread_name); 976 EXPECT_EQ(kMainThreadName,
977 process_data_phase1.tasks[0].birth.sanitized_thread_name);
948 978
949 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count); 979 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count);
950 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_sum); 980 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_sum);
951 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_max); 981 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_max);
952 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_sample); 982 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_sample);
953 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_sum); 983 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_sum);
954 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_max); 984 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_max);
955 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_sample); 985 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_sample);
956 986
957 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].death_thread_name); 987 EXPECT_EQ(kMainThreadName,
988 process_data_phase1.tasks[0].death_sanitized_thread_name);
958 989
959 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 990 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
960 } 991 }
961 992
962 // We will deactivate tracking after the birth, and before the death, and 993 // We will deactivate tracking after the birth, and before the death, and
963 // demonstrate that the lifecycle is completely tallied. This ensures that 994 // demonstrate that the lifecycle is completely tallied. This ensures that
964 // our tallied births are matched by tallied deaths (except for when the 995 // our tallied births are matched by tallied deaths (except for when the
965 // task is still running, or is queued). 996 // task is still running, or is queued).
966 TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToSnapshotMainThread) { 997 TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToSnapshotMainThread) {
967 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); 998 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE);
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
1114 ASSERT_TRUE(it != process_data.phased_snapshots.end()); 1145 ASSERT_TRUE(it != process_data.phased_snapshots.end());
1115 const ProcessDataPhaseSnapshot& process_data_phase = it->second; 1146 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
1116 1147
1117 ASSERT_EQ(2u, process_data_phase.tasks.size()); 1148 ASSERT_EQ(2u, process_data_phase.tasks.size());
1118 1149
1119 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); 1150 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name);
1120 EXPECT_EQ(kFunction, 1151 EXPECT_EQ(kFunction,
1121 process_data_phase.tasks[0].birth.location.function_name); 1152 process_data_phase.tasks[0].birth.location.function_name);
1122 EXPECT_EQ(kLineNumber, 1153 EXPECT_EQ(kLineNumber,
1123 process_data_phase.tasks[0].birth.location.line_number); 1154 process_data_phase.tasks[0].birth.location.line_number);
1124 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[0].birth.thread_name); 1155 EXPECT_EQ(kMainThreadName,
1156 process_data_phase.tasks[0].birth.sanitized_thread_name);
1125 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count); 1157 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count);
1126 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sum); 1158 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sum);
1127 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_max); 1159 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_max);
1128 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sample); 1160 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sample);
1129 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sum); 1161 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sum);
1130 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_max); 1162 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_max);
1131 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sample); 1163 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sample);
1132 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[0].death_thread_name); 1164 EXPECT_EQ(kMainThreadName,
1165 process_data_phase.tasks[0].death_sanitized_thread_name);
1133 EXPECT_EQ(kFile, process_data_phase.tasks[1].birth.location.file_name); 1166 EXPECT_EQ(kFile, process_data_phase.tasks[1].birth.location.file_name);
1134 EXPECT_EQ(kFunction, 1167 EXPECT_EQ(kFunction,
1135 process_data_phase.tasks[1].birth.location.function_name); 1168 process_data_phase.tasks[1].birth.location.function_name);
1136 EXPECT_EQ(kSecondFakeLineNumber, 1169 EXPECT_EQ(kSecondFakeLineNumber,
1137 process_data_phase.tasks[1].birth.location.line_number); 1170 process_data_phase.tasks[1].birth.location.line_number);
1138 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[1].birth.thread_name); 1171 EXPECT_EQ(kMainThreadName,
1172 process_data_phase.tasks[1].birth.sanitized_thread_name);
1139 EXPECT_EQ(1, process_data_phase.tasks[1].death_data.count); 1173 EXPECT_EQ(1, process_data_phase.tasks[1].death_data.count);
1140 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sum); 1174 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sum);
1141 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_max); 1175 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_max);
1142 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sample); 1176 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sample);
1143 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sum); 1177 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sum);
1144 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_max); 1178 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_max);
1145 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sample); 1179 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sample);
1146 EXPECT_EQ(kStillAlive, process_data_phase.tasks[1].death_thread_name); 1180 EXPECT_EQ(kStillAlive,
1181 process_data_phase.tasks[1].death_sanitized_thread_name);
1147 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 1182 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
1148 } 1183 }
1149 1184
1150 TEST_F(TrackedObjectsTest, TaskWithNestedExclusion) { 1185 TEST_F(TrackedObjectsTest, TaskWithNestedExclusion) {
1151 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); 1186 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE);
1152 1187
1153 const char kFunction[] = "TaskWithNestedExclusion"; 1188 const char kFunction[] = "TaskWithNestedExclusion";
1154 Location location(kFunction, kFile, kLineNumber, NULL); 1189 Location location(kFunction, kFile, kLineNumber, NULL);
1155 TallyABirth(location, kMainThreadName); 1190 TallyABirth(location, kMainThreadName);
1156 1191
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 ? 0 1314 ? 0
1280 : 1; 1315 : 1;
1281 int t1 = 1 - t0; 1316 int t1 = 1 - t0;
1282 1317
1283 ASSERT_EQ(2u, process_data_phase.tasks.size()); 1318 ASSERT_EQ(2u, process_data_phase.tasks.size());
1284 EXPECT_EQ(kFile, process_data_phase.tasks[t0].birth.location.file_name); 1319 EXPECT_EQ(kFile, process_data_phase.tasks[t0].birth.location.file_name);
1285 EXPECT_EQ(kFunction, 1320 EXPECT_EQ(kFunction,
1286 process_data_phase.tasks[t0].birth.location.function_name); 1321 process_data_phase.tasks[t0].birth.location.function_name);
1287 EXPECT_EQ(kLineNumber, 1322 EXPECT_EQ(kLineNumber,
1288 process_data_phase.tasks[t0].birth.location.line_number); 1323 process_data_phase.tasks[t0].birth.location.line_number);
1289 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t0].birth.thread_name); 1324 EXPECT_EQ(kMainThreadName,
1325 process_data_phase.tasks[t0].birth.sanitized_thread_name);
1290 EXPECT_EQ(1, process_data_phase.tasks[t0].death_data.count); 1326 EXPECT_EQ(1, process_data_phase.tasks[t0].death_data.count);
1291 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sum); 1327 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sum);
1292 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_max); 1328 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_max);
1293 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sample); 1329 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sample);
1294 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sum); 1330 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sum);
1295 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_max); 1331 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_max);
1296 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sample); 1332 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sample);
1297 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t0].death_thread_name); 1333 EXPECT_EQ(kMainThreadName,
1334 process_data_phase.tasks[t0].death_sanitized_thread_name);
1298 EXPECT_EQ(kFile, process_data_phase.tasks[t1].birth.location.file_name); 1335 EXPECT_EQ(kFile, process_data_phase.tasks[t1].birth.location.file_name);
1299 EXPECT_EQ(kFunction, 1336 EXPECT_EQ(kFunction,
1300 process_data_phase.tasks[t1].birth.location.function_name); 1337 process_data_phase.tasks[t1].birth.location.function_name);
1301 EXPECT_EQ(kSecondFakeLineNumber, 1338 EXPECT_EQ(kSecondFakeLineNumber,
1302 process_data_phase.tasks[t1].birth.location.line_number); 1339 process_data_phase.tasks[t1].birth.location.line_number);
1303 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].birth.thread_name); 1340 EXPECT_EQ(kMainThreadName,
1341 process_data_phase.tasks[t1].birth.sanitized_thread_name);
1304 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.count); 1342 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.count);
1305 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sum); 1343 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sum);
1306 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_max); 1344 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_max);
1307 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sample); 1345 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sample);
1308 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sum); 1346 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sum);
1309 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_max); 1347 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_max);
1310 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sample); 1348 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sample);
1311 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].death_thread_name); 1349 EXPECT_EQ(kMainThreadName,
1350 process_data_phase.tasks[t1].death_sanitized_thread_name);
1312 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 1351 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
1313 } 1352 }
1314 1353
1354 // Repetitively create and stop named threads. Verify that the number of
1355 // instantiated ThreadData instance is equal to the number of different
1356 // sanitized thread names used in the test.
1357 TEST_F(TrackedObjectsTest, ReuseRetiredThreadData) {
1358 const char* const kThreadNames[] = {"Foo%d", "Bar%d", "123Dummy%d",
1359 "456Dummy%d", "%d"};
1360 constexpr int kNumIterations = 10;
1361 EXPECT_EQ(0, GetNumThreadData());
1362
1363 for (int i = 0; i < kNumIterations; ++i) {
1364 for (const char* thread_name : kThreadNames) {
1365 base::Thread thread(base::StringPrintf(thread_name, i));
1366 EXPECT_TRUE(thread.Start());
1367 }
1368 }
1369
1370 // Expect one ThreadData instance for each element in |kThreadNames| and one
1371 // ThreadData instance for the main thread.
1372 EXPECT_EQ(static_cast<int>(arraysize(kThreadNames) + 1), GetNumThreadData());
1373 }
1374
1315 } // namespace tracked_objects 1375 } // namespace tracked_objects
OLDNEW
« no previous file with comments | « base/tracked_objects.cc ('k') | chrome/browser/task_profiler/task_profiler_data_serializer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698