| OLD | NEW |
| 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 #include "base/tracked_objects.h" | 5 #include "base/tracked_objects.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 #include <stdlib.h> | 8 #include <stdlib.h> |
| 9 | 9 |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| 11 #include "base/debug/leak_annotations.h" |
| 11 #include "base/format_macros.h" | 12 #include "base/format_macros.h" |
| 12 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/process_util.h" | 14 #include "base/process_util.h" |
| 14 #include "base/profiler/alternate_timer.h" | 15 #include "base/profiler/alternate_timer.h" |
| 15 #include "base/stringprintf.h" | 16 #include "base/stringprintf.h" |
| 16 #include "base/third_party/valgrind/memcheck.h" | 17 #include "base/third_party/valgrind/memcheck.h" |
| 17 #include "base/threading/thread_restrictions.h" | 18 #include "base/threading/thread_restrictions.h" |
| 18 #include "base/port.h" | 19 #include "base/port.h" |
| 19 | 20 |
| 20 using base::TimeDelta; | 21 using base::TimeDelta; |
| (...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 | 802 |
| 802 // Put most global static back in pristine shape. | 803 // Put most global static back in pristine shape. |
| 803 worker_thread_data_creation_count_ = 0; | 804 worker_thread_data_creation_count_ = 0; |
| 804 cleanup_count_ = 0; | 805 cleanup_count_ = 0; |
| 805 tls_index_.Set(NULL); | 806 tls_index_.Set(NULL); |
| 806 status_ = DORMANT_DURING_TESTS; // Almost UNINITIALIZED. | 807 status_ = DORMANT_DURING_TESTS; // Almost UNINITIALIZED. |
| 807 | 808 |
| 808 // To avoid any chance of racing in unit tests, which is the only place we | 809 // To avoid any chance of racing in unit tests, which is the only place we |
| 809 // call this function, we may sometimes leak all the data structures we | 810 // call this function, we may sometimes leak all the data structures we |
| 810 // recovered, as they may still be in use on threads from prior tests! | 811 // recovered, as they may still be in use on threads from prior tests! |
| 811 if (leak) | 812 if (leak) { |
| 813 ThreadData* thread_data = thread_data_list; |
| 814 while (thread_data) { |
| 815 ANNOTATE_LEAKING_OBJECT_PTR(thread_data); |
| 816 thread_data = thread_data->next(); |
| 817 } |
| 812 return; | 818 return; |
| 819 } |
| 813 | 820 |
| 814 // When we want to cleanup (on a single thread), here is what we do. | 821 // When we want to cleanup (on a single thread), here is what we do. |
| 815 | 822 |
| 816 // Do actual recursive delete in all ThreadData instances. | 823 // Do actual recursive delete in all ThreadData instances. |
| 817 while (thread_data_list) { | 824 while (thread_data_list) { |
| 818 ThreadData* next_thread_data = thread_data_list; | 825 ThreadData* next_thread_data = thread_data_list; |
| 819 thread_data_list = thread_data_list->next(); | 826 thread_data_list = thread_data_list->next(); |
| 820 | 827 |
| 821 for (BirthMap::iterator it = next_thread_data->birth_map_.begin(); | 828 for (BirthMap::iterator it = next_thread_data->birth_map_.begin(); |
| 822 next_thread_data->birth_map_.end() != it; ++it) | 829 next_thread_data->birth_map_.end() != it; ++it) |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 863 : process_id(base::GetCurrentProcId()) { | 870 : process_id(base::GetCurrentProcId()) { |
| 864 #else | 871 #else |
| 865 : process_id(0) { | 872 : process_id(0) { |
| 866 #endif | 873 #endif |
| 867 } | 874 } |
| 868 | 875 |
| 869 ProcessDataSnapshot::~ProcessDataSnapshot() { | 876 ProcessDataSnapshot::~ProcessDataSnapshot() { |
| 870 } | 877 } |
| 871 | 878 |
| 872 } // namespace tracked_objects | 879 } // namespace tracked_objects |
| OLD | NEW |