| 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" | 
|  | 9 | 
| 8 namespace v8 { | 10 namespace v8 { | 
| 9 namespace internal { | 11 namespace internal { | 
| 10 | 12 | 
| 11 // A simple ring buffer class with maximum size known at compile time. | 13 // A simple ring buffer class with maximum size known at compile time. | 
| 12 // The class only implements the functionality required in GCTracer. | 14 // The class only implements the functionality required in GCTracer. | 
| 13 template <typename T, size_t MAX_SIZE> | 15 template <typename T, size_t MAX_SIZE> | 
| 14 class RingBuffer { | 16 class RingBuffer { | 
| 15  public: | 17  public: | 
| 16   class const_iterator { | 18   class const_iterator { | 
| 17    public: | 19    public: | 
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 74   size_t begin_; | 76   size_t begin_; | 
| 75   size_t end_; | 77   size_t end_; | 
| 76 | 78 | 
| 77   DISALLOW_COPY_AND_ASSIGN(RingBuffer); | 79   DISALLOW_COPY_AND_ASSIGN(RingBuffer); | 
| 78 }; | 80 }; | 
| 79 | 81 | 
| 80 | 82 | 
| 81 // GCTracer collects and prints ONE line after each garbage collector | 83 // GCTracer collects and prints ONE line after each garbage collector | 
| 82 // invocation IFF --trace_gc is used. | 84 // invocation IFF --trace_gc is used. | 
| 83 // TODO(ernstm): Unit tests. | 85 // TODO(ernstm): Unit tests. | 
| 84 class GCTracer BASE_EMBEDDED { | 86 class GCTracer { | 
| 85  public: | 87  public: | 
| 86   class Scope BASE_EMBEDDED { | 88   class Scope { | 
| 87    public: | 89    public: | 
| 88     enum ScopeId { | 90     enum ScopeId { | 
| 89       EXTERNAL, | 91       EXTERNAL, | 
| 90       MC_MARK, | 92       MC_MARK, | 
| 91       MC_SWEEP, | 93       MC_SWEEP, | 
| 92       MC_SWEEP_NEWSPACE, | 94       MC_SWEEP_NEWSPACE, | 
| 93       MC_SWEEP_OLDSPACE, | 95       MC_SWEEP_OLDSPACE, | 
| 94       MC_SWEEP_CODE, | 96       MC_SWEEP_CODE, | 
| 95       MC_SWEEP_CELL, | 97       MC_SWEEP_CELL, | 
| 96       MC_SWEEP_MAP, | 98       MC_SWEEP_MAP, | 
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 284   double MaxIncrementalMarkingDuration() const; | 286   double MaxIncrementalMarkingDuration() const; | 
| 285 | 287 | 
| 286   // Compute the average incremental marking speed in bytes/millisecond. | 288   // Compute the average incremental marking speed in bytes/millisecond. | 
| 287   // Returns 0 if no events have been recorded. | 289   // Returns 0 if no events have been recorded. | 
| 288   intptr_t IncrementalMarkingSpeedInBytesPerMillisecond() const; | 290   intptr_t IncrementalMarkingSpeedInBytesPerMillisecond() const; | 
| 289 | 291 | 
| 290   // Compute the average scavenge speed in bytes/millisecond. | 292   // Compute the average scavenge speed in bytes/millisecond. | 
| 291   // Returns 0 if no events have been recorded. | 293   // Returns 0 if no events have been recorded. | 
| 292   intptr_t ScavengeSpeedInBytesPerMillisecond() const; | 294   intptr_t ScavengeSpeedInBytesPerMillisecond() const; | 
| 293 | 295 | 
|  | 296   // Compute the max mark-sweep speed in bytes/millisecond. | 
|  | 297   // Returns 0 if no events have been recorded. | 
|  | 298   intptr_t MarkCompactSpeedInBytesPerMillisecond() const; | 
|  | 299 | 
| 294  private: | 300  private: | 
| 295   // Print one detailed trace line in name=value format. | 301   // Print one detailed trace line in name=value format. | 
| 296   // TODO(ernstm): Move to Heap. | 302   // TODO(ernstm): Move to Heap. | 
| 297   void PrintNVP() const; | 303   void PrintNVP() const; | 
| 298 | 304 | 
| 299   // Print one trace line. | 305   // Print one trace line. | 
| 300   // TODO(ernstm): Move to Heap. | 306   // TODO(ernstm): Move to Heap. | 
| 301   void Print() const; | 307   void Print() const; | 
| 302 | 308 | 
| 303   // Compute the mean duration of the events in the given ring buffer. | 309   // Compute the mean duration of the events in the given ring buffer. | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 354   // of the initial atomic sweeping pause. Make sure that it accumulates | 360   // of the initial atomic sweeping pause. Make sure that it accumulates | 
| 355   // all sweeping operations performed on the main thread. | 361   // all sweeping operations performed on the main thread. | 
| 356   double cumulative_sweeping_duration_; | 362   double cumulative_sweeping_duration_; | 
| 357 | 363 | 
| 358   DISALLOW_COPY_AND_ASSIGN(GCTracer); | 364   DISALLOW_COPY_AND_ASSIGN(GCTracer); | 
| 359 }; | 365 }; | 
| 360 } | 366 } | 
| 361 }  // namespace v8::internal | 367 }  // namespace v8::internal | 
| 362 | 368 | 
| 363 #endif  // V8_HEAP_GC_TRACER_H_ | 369 #endif  // V8_HEAP_GC_TRACER_H_ | 
| OLD | NEW | 
|---|