| Index: src/heap/gc-tracer.h
|
| diff --git a/src/heap/gc-tracer.h b/src/heap/gc-tracer.h
|
| index 0524f25e500c502acbab951eda3a97054a5fe968..4e70f0741c5aaf0e05c9a7297bbbf972e6ce4527 100644
|
| --- a/src/heap/gc-tracer.h
|
| +++ b/src/heap/gc-tracer.h
|
| @@ -129,6 +129,22 @@ class GCTracer {
|
| };
|
|
|
|
|
| + class AllocationEvent {
|
| + public:
|
| + // Default constructor leaves the event uninitialized.
|
| + AllocationEvent() {}
|
| +
|
| + AllocationEvent(double duration, intptr_t allocation_in_bytes);
|
| +
|
| + // Time spent in the mutator during the end of the last garbage collection
|
| + // to the beginning of the next garbage collection.
|
| + double duration_;
|
| +
|
| + // Memory allocated in the new space during the end of the last garbage
|
| + // collection to the beginning of the next garbage collection.
|
| + intptr_t allocation_in_bytes_;
|
| + };
|
| +
|
| class Event {
|
| public:
|
| enum Type { SCAVENGER = 0, MARK_COMPACTOR = 1, START = 2 };
|
| @@ -223,6 +239,8 @@ class GCTracer {
|
|
|
| typedef RingBuffer<Event, kRingBufferMaxSize> EventBuffer;
|
|
|
| + typedef RingBuffer<AllocationEvent, kRingBufferMaxSize> AllocationEventBuffer;
|
| +
|
| explicit GCTracer(Heap* heap);
|
|
|
| // Start collecting data.
|
| @@ -232,6 +250,9 @@ class GCTracer {
|
| // Stop collecting data and print results.
|
| void Stop();
|
|
|
| + // Log an allocation throughput event.
|
| + void AddNewSpaceAllocationTime(double duration, intptr_t allocation_in_bytes);
|
| +
|
| // Log an incremental marking step.
|
| void AddIncrementalMarkingStep(double duration, intptr_t bytes);
|
|
|
| @@ -297,6 +318,10 @@ class GCTracer {
|
| // Returns 0 if no events have been recorded.
|
| intptr_t MarkCompactSpeedInBytesPerMillisecond() const;
|
|
|
| + // Allocation throughput in the new space in bytes/millisecond.
|
| + // Returns 0 if no events have been recorded.
|
| + intptr_t NewSpaceAllocationThroughputInBytesPerMillisecond() const;
|
| +
|
| private:
|
| // Print one detailed trace line in name=value format.
|
| // TODO(ernstm): Move to Heap.
|
| @@ -331,6 +356,9 @@ class GCTracer {
|
| // RingBuffers for MARK_COMPACTOR events.
|
| EventBuffer mark_compactor_events_;
|
|
|
| + // RingBuffer for allocation events.
|
| + AllocationEventBuffer allocation_events_;
|
| +
|
| // Cumulative number of incremental marking steps since creation of tracer.
|
| int cumulative_incremental_marking_steps_;
|
|
|
| @@ -361,6 +389,10 @@ class GCTracer {
|
| // all sweeping operations performed on the main thread.
|
| double cumulative_sweeping_duration_;
|
|
|
| + // Holds the new space top pointer recorded at the end of the last garbage
|
| + // collection.
|
| + intptr_t new_space_top_after_gc_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(GCTracer);
|
| };
|
| }
|
|
|