Index: src/heap/gc-tracer.h |
diff --git a/src/heap/gc-tracer.h b/src/heap/gc-tracer.h |
index 04dac62f0261fe6447eb5a7e6e71bbb5f57e8d4b..66c701c720c5cf7bc432779813a464327f06a579 100644 |
--- a/src/heap/gc-tracer.h |
+++ b/src/heap/gc-tracer.h |
@@ -160,7 +160,12 @@ class GCTracer { |
class Event { |
public: |
- enum Type { SCAVENGER = 0, MARK_COMPACTOR = 1, START = 2 }; |
+ enum Type { |
+ SCAVENGER = 0, |
+ MARK_COMPACTOR = 1, |
+ INCREMENTAL_MARK_COMPACTOR = 2, |
+ START = 3 |
+ }; |
// Default constructor leaves the event uninitialized. |
Event() {} |
@@ -211,7 +216,8 @@ class GCTracer { |
// Incremental marking steps since |
// - last event for SCAVENGER events |
- // - last MARK_COMPACTOR event for MARK_COMPACTOR events |
+ // - last INCREMENTAL_MARK_COMPACTOR event for INCREMENTAL_MARK_COMPACTOR |
+ // events |
int incremental_marking_steps; |
// Bytes marked since creation of tracer (value at start of event). |
@@ -219,7 +225,8 @@ class GCTracer { |
// Bytes marked since |
// - last event for SCAVENGER events |
- // - last MARK_COMPACTOR event for MARK_COMPACTOR events |
+ // - last INCREMENTAL_MARK_COMPACTOR event for INCREMENTAL_MARK_COMPACTOR |
+ // events |
intptr_t incremental_marking_bytes; |
// Cumulative duration of incremental marking steps since creation of |
@@ -228,7 +235,8 @@ class GCTracer { |
// Duration of incremental marking steps since |
// - last event for SCAVENGER events |
- // - last MARK_COMPACTOR event for MARK_COMPACTOR events |
+ // - last INCREMENTAL_MARK_COMPACTOR event for INCREMENTAL_MARK_COMPACTOR |
+ // events |
double incremental_marking_duration; |
// Cumulative pure duration of incremental marking steps since creation of |
@@ -237,7 +245,8 @@ class GCTracer { |
// Duration of pure incremental marking steps since |
// - last event for SCAVENGER events |
- // - last MARK_COMPACTOR event for MARK_COMPACTOR events |
+ // - last INCREMENTAL_MARK_COMPACTOR event for INCREMENTAL_MARK_COMPACTOR |
+ // events |
double pure_incremental_marking_duration; |
// Longest incremental marking step since start of marking. |
@@ -316,6 +325,12 @@ class GCTracer { |
return MaxDuration(mark_compactor_events_); |
} |
+ // Compute the mean duration of the last incremental mark compactor |
+ // events. Returns 0 if no events have been recorded. |
+ double MeanIncrementalMarkCompactorDuration() const { |
+ return MeanDuration(incremental_mark_compactor_events_); |
+ } |
+ |
// Compute the mean step duration of the last incremental marking round. |
// Returns 0 if no incremental marking round has been completed. |
double MeanIncrementalMarkingDuration() const; |
@@ -332,10 +347,15 @@ class GCTracer { |
// Returns 0 if no events have been recorded. |
intptr_t ScavengeSpeedInBytesPerMillisecond() const; |
- // Compute the max mark-sweep speed in bytes/millisecond. |
+ // Compute the average mark-sweep speed in bytes/millisecond. |
// Returns 0 if no events have been recorded. |
intptr_t MarkCompactSpeedInBytesPerMillisecond() const; |
+ // Compute the average incremental mark-sweep finalize speed in |
+ // bytes/millisecond. |
+ // Returns 0 if no events have been recorded. |
+ intptr_t FinalIncrementalMarkCompactSpeedInBytesPerMillisecond() const; |
+ |
// Allocation throughput in the new space in bytes/millisecond. |
// Returns 0 if no events have been recorded. |
intptr_t NewSpaceAllocationThroughputInBytesPerMillisecond() const; |
@@ -361,6 +381,16 @@ class GCTracer { |
// Compute the max duration of the events in the given ring buffer. |
double MaxDuration(const EventBuffer& events) const; |
+ void ClearMarkCompactStatistics() { |
+ cumulative_incremental_marking_steps_ = 0; |
+ cumulative_incremental_marking_bytes_ = 0; |
+ cumulative_incremental_marking_duration_ = 0; |
+ cumulative_pure_incremental_marking_duration_ = 0; |
+ longest_incremental_marking_step_ = 0; |
+ cumulative_marking_duration_ = 0; |
+ cumulative_sweeping_duration_ = 0; |
+ } |
+ |
// Pointer to the heap that owns this tracer. |
Heap* heap_; |
@@ -371,8 +401,8 @@ class GCTracer { |
// Previous tracer event. |
Event previous_; |
- // Previous MARK_COMPACTOR event. |
- Event previous_mark_compactor_event_; |
+ // Previous INCREMENTAL_MARK_COMPACTOR event. |
+ Event previous_incremental_mark_compactor_event_; |
// RingBuffers for SCAVENGER events. |
EventBuffer scavenger_events_; |
@@ -380,6 +410,9 @@ class GCTracer { |
// RingBuffers for MARK_COMPACTOR events. |
EventBuffer mark_compactor_events_; |
+ // RingBuffers for INCREMENTAL_MARK_COMPACTOR events. |
+ EventBuffer incremental_mark_compactor_events_; |
+ |
// RingBuffer for allocation events. |
AllocationEventBuffer allocation_events_; |