OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 // Activity tracking provides a low-overhead method of collecting information | 5 // Activity tracking provides a low-overhead method of collecting information |
6 // about the state of the application for analysis both while it is running | 6 // about the state of the application for analysis both while it is running |
7 // and after it has terminated unexpectedly. Its primary purpose is to help | 7 // and after it has terminated unexpectedly. Its primary purpose is to help |
8 // locate reasons the browser becomes unresponsive by providing insight into | 8 // locate reasons the browser becomes unresponsive by providing insight into |
9 // what all the various threads and processes are (or were) doing. | 9 // what all the various threads and processes are (or were) doing. |
10 | 10 |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
155 // Gets a reference to an object of the configured type. This can return | 155 // Gets a reference to an object of the configured type. This can return |
156 // a null reference if it was not possible to allocate the memory. | 156 // a null reference if it was not possible to allocate the memory. |
157 Reference GetObjectReference(); | 157 Reference GetObjectReference(); |
158 | 158 |
159 // Returns an object to the "free" pool. | 159 // Returns an object to the "free" pool. |
160 void ReleaseObjectReference(Reference ref); | 160 void ReleaseObjectReference(Reference ref); |
161 | 161 |
162 // Helper function to access an object allocated using this instance. | 162 // Helper function to access an object allocated using this instance. |
163 template <typename T> | 163 template <typename T> |
164 T* GetAsObject(Reference ref) { | 164 T* GetAsObject(Reference ref) { |
165 return allocator_->GetAsObject<T>(ref, object_type_); | 165 return allocator_->GetAsObject<T>(ref); |
166 } | 166 } |
167 | 167 |
168 // Similar to GetAsObject() but converts references to arrays of objects. | 168 // Similar to GetAsObject() but converts references to arrays of objects. |
169 template <typename T> | 169 template <typename T> |
170 T* GetAsArray(Reference ref, size_t count) { | 170 T* GetAsArray(Reference ref, size_t count) { |
171 return allocator_->GetAsArray<T>(ref, object_type_, count); | 171 return allocator_->GetAsArray<T>(ref, object_type_, count); |
172 } | 172 } |
173 | 173 |
174 // The current "used size" of the internal cache, visible for testing. | 174 // The current "used size" of the internal cache, visible for testing. |
175 size_t cache_used() const { return cache_used_; } | 175 size_t cache_used() const { return cache_used_; } |
(...skipping 15 matching lines...) Expand all Loading... | |
191 | 191 |
192 DISALLOW_COPY_AND_ASSIGN(ActivityTrackerMemoryAllocator); | 192 DISALLOW_COPY_AND_ASSIGN(ActivityTrackerMemoryAllocator); |
193 }; | 193 }; |
194 | 194 |
195 | 195 |
196 // This structure is the full contents recorded for every activity pushed | 196 // This structure is the full contents recorded for every activity pushed |
197 // onto the stack. The |activity_type| indicates what is actually stored in | 197 // onto the stack. The |activity_type| indicates what is actually stored in |
198 // the |data| field. All fields must be explicitly sized types to ensure no | 198 // the |data| field. All fields must be explicitly sized types to ensure no |
199 // interoperability problems between 32-bit and 64-bit systems. | 199 // interoperability problems between 32-bit and 64-bit systems. |
200 struct Activity { | 200 struct Activity { |
201 // SHA1(base::debug::Activity): Increment this if structure changes! | |
202 static constexpr uint32_t kPersistentTypeId = 0x99425159 + 1; | |
203 // Expected size for 32/64-bit check. Update this if structure changes! | |
204 static constexpr size_t kExpectedInstanceSize = 56; | |
manzagop (departed)
2017/02/17 15:50:55
static assert the size?
| |
205 | |
201 // The type of an activity on the stack. Activities are broken into | 206 // The type of an activity on the stack. Activities are broken into |
202 // categories with the category ID taking the top 4 bits and the lower | 207 // categories with the category ID taking the top 4 bits and the lower |
203 // bits representing an action within that category. This combination | 208 // bits representing an action within that category. This combination |
204 // makes it easy to "switch" based on the type during analysis. | 209 // makes it easy to "switch" based on the type during analysis. |
205 enum Type : uint8_t { | 210 enum Type : uint8_t { |
206 // This "null" constant is used to indicate "do not change" in calls. | 211 // This "null" constant is used to indicate "do not change" in calls. |
207 ACT_NULL = 0, | 212 ACT_NULL = 0, |
208 | 213 |
209 // Task activities involve callbacks posted to a thread or thread-pool | 214 // Task activities involve callbacks posted to a thread or thread-pool |
210 // using the PostTask() method or any of its friends. | 215 // using the PostTask() method or any of its friends. |
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1068 ScopedProcessWaitActivity(const void* program_counter, | 1073 ScopedProcessWaitActivity(const void* program_counter, |
1069 const base::Process* process); | 1074 const base::Process* process); |
1070 DISALLOW_COPY_AND_ASSIGN(ScopedProcessWaitActivity); | 1075 DISALLOW_COPY_AND_ASSIGN(ScopedProcessWaitActivity); |
1071 }; | 1076 }; |
1072 #endif | 1077 #endif |
1073 | 1078 |
1074 } // namespace debug | 1079 } // namespace debug |
1075 } // namespace base | 1080 } // namespace base |
1076 | 1081 |
1077 #endif // BASE_DEBUG_ACTIVITY_TRACKER_H_ | 1082 #endif // BASE_DEBUG_ACTIVITY_TRACKER_H_ |
OLD | NEW |