OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project 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 #ifndef V8_HEAP_GC_TRACER_H_ | 5 #ifndef V8_HEAP_GC_TRACER_H_ |
6 #define V8_HEAP_GC_TRACER_H_ | 6 #define V8_HEAP_GC_TRACER_H_ |
7 | 7 |
8 #include "src/base/platform/platform.h" | 8 #include "src/base/platform/platform.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 | 78 |
79 private: | 79 private: |
80 T elements_[MAX_SIZE + 1]; | 80 T elements_[MAX_SIZE + 1]; |
81 size_t begin_; | 81 size_t begin_; |
82 size_t end_; | 82 size_t end_; |
83 | 83 |
84 DISALLOW_COPY_AND_ASSIGN(RingBuffer); | 84 DISALLOW_COPY_AND_ASSIGN(RingBuffer); |
85 }; | 85 }; |
86 | 86 |
87 | 87 |
| 88 enum ScavengeSpeedMode { kForAllObjects, kForSurvivedObjects }; |
| 89 |
| 90 |
88 // GCTracer collects and prints ONE line after each garbage collector | 91 // GCTracer collects and prints ONE line after each garbage collector |
89 // invocation IFF --trace_gc is used. | 92 // invocation IFF --trace_gc is used. |
90 // TODO(ernstm): Unit tests. | 93 // TODO(ernstm): Unit tests. |
91 class GCTracer { | 94 class GCTracer { |
92 public: | 95 public: |
93 class Scope { | 96 class Scope { |
94 public: | 97 public: |
95 enum ScopeId { | 98 enum ScopeId { |
96 EXTERNAL, | 99 EXTERNAL, |
97 MC_MARK, | 100 MC_MARK, |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 // Total amount of space either wasted or contained in one of free lists | 223 // Total amount of space either wasted or contained in one of free lists |
221 // before the current GC. | 224 // before the current GC. |
222 intptr_t start_holes_size; | 225 intptr_t start_holes_size; |
223 | 226 |
224 // Total amount of space either wasted or contained in one of free lists | 227 // Total amount of space either wasted or contained in one of free lists |
225 // after the current GC. | 228 // after the current GC. |
226 intptr_t end_holes_size; | 229 intptr_t end_holes_size; |
227 | 230 |
228 // Size of new space objects in constructor. | 231 // Size of new space objects in constructor. |
229 intptr_t new_space_object_size; | 232 intptr_t new_space_object_size; |
| 233 // Size of survived new space objects in desctructor. |
| 234 intptr_t survived_new_space_object_size; |
230 | 235 |
231 // Number of incremental marking steps since creation of tracer. | 236 // Number of incremental marking steps since creation of tracer. |
232 // (value at start of event) | 237 // (value at start of event) |
233 int cumulative_incremental_marking_steps; | 238 int cumulative_incremental_marking_steps; |
234 | 239 |
235 // Incremental marking steps since | 240 // Incremental marking steps since |
236 // - last event for SCAVENGER events | 241 // - last event for SCAVENGER events |
237 // - last INCREMENTAL_MARK_COMPACTOR event for INCREMENTAL_MARK_COMPACTOR | 242 // - last INCREMENTAL_MARK_COMPACTOR event for INCREMENTAL_MARK_COMPACTOR |
238 // events | 243 // events |
239 int incremental_marking_steps; | 244 int incremental_marking_steps; |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 // Compute the max step duration of the last incremental marking round. | 369 // Compute the max step duration of the last incremental marking round. |
365 // Returns 0 if no incremental marking round has been completed. | 370 // Returns 0 if no incremental marking round has been completed. |
366 double MaxIncrementalMarkingDuration() const; | 371 double MaxIncrementalMarkingDuration() const; |
367 | 372 |
368 // Compute the average incremental marking speed in bytes/millisecond. | 373 // Compute the average incremental marking speed in bytes/millisecond. |
369 // Returns 0 if no events have been recorded. | 374 // Returns 0 if no events have been recorded. |
370 intptr_t IncrementalMarkingSpeedInBytesPerMillisecond() const; | 375 intptr_t IncrementalMarkingSpeedInBytesPerMillisecond() const; |
371 | 376 |
372 // Compute the average scavenge speed in bytes/millisecond. | 377 // Compute the average scavenge speed in bytes/millisecond. |
373 // Returns 0 if no events have been recorded. | 378 // Returns 0 if no events have been recorded. |
374 intptr_t ScavengeSpeedInBytesPerMillisecond() const; | 379 intptr_t ScavengeSpeedInBytesPerMillisecond( |
| 380 ScavengeSpeedMode mode = kForAllObjects) const; |
375 | 381 |
376 // Compute the average mark-sweep speed in bytes/millisecond. | 382 // Compute the average mark-sweep speed in bytes/millisecond. |
377 // Returns 0 if no events have been recorded. | 383 // Returns 0 if no events have been recorded. |
378 intptr_t MarkCompactSpeedInBytesPerMillisecond() const; | 384 intptr_t MarkCompactSpeedInBytesPerMillisecond() const; |
379 | 385 |
380 // Compute the average incremental mark-sweep finalize speed in | 386 // Compute the average incremental mark-sweep finalize speed in |
381 // bytes/millisecond. | 387 // bytes/millisecond. |
382 // Returns 0 if no events have been recorded. | 388 // Returns 0 if no events have been recorded. |
383 intptr_t FinalIncrementalMarkCompactSpeedInBytesPerMillisecond() const; | 389 intptr_t FinalIncrementalMarkCompactSpeedInBytesPerMillisecond() const; |
384 | 390 |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 | 535 |
530 // Counts how many tracers were started without stopping. | 536 // Counts how many tracers were started without stopping. |
531 int start_counter_; | 537 int start_counter_; |
532 | 538 |
533 DISALLOW_COPY_AND_ASSIGN(GCTracer); | 539 DISALLOW_COPY_AND_ASSIGN(GCTracer); |
534 }; | 540 }; |
535 } | 541 } |
536 } // namespace v8::internal | 542 } // namespace v8::internal |
537 | 543 |
538 #endif // V8_HEAP_GC_TRACER_H_ | 544 #endif // V8_HEAP_GC_TRACER_H_ |
OLD | NEW |