Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(592)

Unified Diff: src/heap/gc-tracer.h

Issue 785593002: Shrink initial old generation size based on new space survival rate. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/flag-definitions.h ('k') | src/heap/gc-tracer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap/gc-tracer.h
diff --git a/src/heap/gc-tracer.h b/src/heap/gc-tracer.h
index 6932eadfd8d4ea4298bed4ff9d06c0c488b5759a..a2e4bc293eefc4366d500fcc81ea945c828a33b0 100644
--- a/src/heap/gc-tracer.h
+++ b/src/heap/gc-tracer.h
@@ -159,6 +159,17 @@ class GCTracer {
};
+ class SurvivalEvent {
+ public:
+ // Default constructor leaves the event uninitialized.
+ SurvivalEvent() {}
+
+ explicit SurvivalEvent(double survival_rate);
+
+ double survival_rate_;
+ };
+
+
class Event {
public:
enum Type {
@@ -267,6 +278,8 @@ class GCTracer {
typedef RingBuffer<ContextDisposalEvent, kRingBufferMaxSize>
ContextDisposalEventBuffer;
+ typedef RingBuffer<SurvivalEvent, kRingBufferMaxSize> SurvivalEventBuffer;
+
explicit GCTracer(Heap* heap);
// Start collecting data.
@@ -281,6 +294,8 @@ class GCTracer {
void AddContextDisposalTime(double time);
+ void AddSurvivalRate(double survival_rate);
+
// Log an incremental marking step.
void AddIncrementalMarkingStep(double duration, intptr_t bytes);
@@ -367,6 +382,14 @@ class GCTracer {
// Returns 0 if no events have been recorded.
double ContextDisposalRateInMilliseconds() const;
+ // Computes the average survival rate based on the last recorded survival
+ // events.
+ // Returns 0 if no events have been recorded.
+ double AverageSurvivalRate() const;
+
+ // Returns true if at least one survival event was recorded.
+ bool SurvivalEventsRecorded() const;
+
private:
// Print one detailed trace line in name=value format.
// TODO(ernstm): Move to Heap.
@@ -417,8 +440,12 @@ class GCTracer {
// RingBuffer for allocation events.
AllocationEventBuffer allocation_events_;
+ // RingBuffer for context disposal events.
ContextDisposalEventBuffer context_disposal_events_;
+ // RingBuffer for survival events.
+ SurvivalEventBuffer survival_events_;
+
// Cumulative number of incremental marking steps since creation of tracer.
int cumulative_incremental_marking_steps_;
« no previous file with comments | « src/flag-definitions.h ('k') | src/heap/gc-tracer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698