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 // --- | 5 // --- |
6 // Author: Sainbayar Sukhbaatar | 6 // Author: Sainbayar Sukhbaatar |
7 // Dai Mikurube | 7 // Dai Mikurube |
8 // | 8 // |
9 | 9 |
10 #include "deep-heap-profile.h" | 10 #include "deep-heap-profile.h" |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 } | 222 } |
223 | 223 |
224 DeepHeapProfile::~DeepHeapProfile() { | 224 DeepHeapProfile::~DeepHeapProfile() { |
225 heap_profile_->dealloc_(profiler_buffer_); | 225 heap_profile_->dealloc_(profiler_buffer_); |
226 heap_profile_->dealloc_(filename_prefix_); | 226 heap_profile_->dealloc_(filename_prefix_); |
227 delete memory_residence_info_getter_; | 227 delete memory_residence_info_getter_; |
228 } | 228 } |
229 | 229 |
230 // Global malloc() should not be used in this function. | 230 // Global malloc() should not be used in this function. |
231 // Use LowLevelAlloc if required. | 231 // Use LowLevelAlloc if required. |
232 int DeepHeapProfile::FillOrderedProfile(char raw_buffer[], int buffer_size) { | 232 int DeepHeapProfile::FillOrderedProfile(char raw_buffer[], |
| 233 int buffer_size, |
| 234 const char* reason) { |
233 TextBuffer buffer(raw_buffer, buffer_size); | 235 TextBuffer buffer(raw_buffer, buffer_size); |
234 TextBuffer global_buffer(profiler_buffer_, kProfilerBufferSize); | 236 TextBuffer global_buffer(profiler_buffer_, kProfilerBufferSize); |
235 | 237 |
236 #ifndef NDEBUG | 238 #ifndef NDEBUG |
237 int64 starting_cycles = CycleClock::Now(); | 239 int64 starting_cycles = CycleClock::Now(); |
238 #endif | 240 #endif |
239 | 241 |
240 // Get the time before starting snapshot. | 242 // Get the time before starting snapshot. |
241 // TODO(dmikurube): Consider gettimeofday if available. | 243 // TODO(dmikurube): Consider gettimeofday if available. |
242 time_t time_value = time(NULL); | 244 time_t time_value = time(NULL); |
(...skipping 25 matching lines...) Expand all Loading... |
268 buffer.AppendString(kProfileVersion, 0); | 270 buffer.AppendString(kProfileVersion, 0); |
269 buffer.AppendString("\n", 0); | 271 buffer.AppendString("\n", 0); |
270 | 272 |
271 // Fill buffer with meta information. | 273 // Fill buffer with meta information. |
272 buffer.AppendString(kMetaInformationHeader, 0); | 274 buffer.AppendString(kMetaInformationHeader, 0); |
273 | 275 |
274 buffer.AppendString("Time: ", 0); | 276 buffer.AppendString("Time: ", 0); |
275 buffer.AppendUnsignedLong(time_value, 0); | 277 buffer.AppendUnsignedLong(time_value, 0); |
276 buffer.AppendChar('\n'); | 278 buffer.AppendChar('\n'); |
277 | 279 |
| 280 if (reason != NULL) { |
| 281 buffer.AppendString("Reason: ", 0); |
| 282 buffer.AppendString(reason, 0); |
| 283 buffer.AppendChar('\n'); |
| 284 } |
| 285 |
278 // Fill buffer with the global stats. | 286 // Fill buffer with the global stats. |
279 buffer.AppendString(kMMapListHeader, 0); | 287 buffer.AppendString(kMMapListHeader, 0); |
280 | 288 |
281 stats_.SnapshotMaps(memory_residence_info_getter_, this, &buffer); | 289 stats_.SnapshotMaps(memory_residence_info_getter_, this, &buffer); |
282 | 290 |
283 // Fill buffer with the global stats. | 291 // Fill buffer with the global stats. |
284 buffer.AppendString(kGlobalStatsHeader, 0); | 292 buffer.AppendString(kGlobalStatsHeader, 0); |
285 | 293 |
286 stats_.Unparse(&buffer); | 294 stats_.Unparse(&buffer); |
287 | 295 |
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
958 } | 966 } |
959 | 967 |
960 DeepHeapProfile::~DeepHeapProfile() { | 968 DeepHeapProfile::~DeepHeapProfile() { |
961 } | 969 } |
962 | 970 |
963 int DeepHeapProfile::FillOrderedProfile(char raw_buffer[], int buffer_size) { | 971 int DeepHeapProfile::FillOrderedProfile(char raw_buffer[], int buffer_size) { |
964 return heap_profile_->FillOrderedProfile(raw_buffer, buffer_size); | 972 return heap_profile_->FillOrderedProfile(raw_buffer, buffer_size); |
965 } | 973 } |
966 | 974 |
967 #endif // USE_DEEP_HEAP_PROFILE | 975 #endif // USE_DEEP_HEAP_PROFILE |
OLD | NEW |