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

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

Issue 2361563004: [heap] Simplify incremental marking counters in GCTracer. (Closed)
Patch Set: fix test Created 4 years, 3 months 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 | « no previous file | 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 120997fdfd30a991baa215aa06b8c5ae04823683..21004f60e7b61666f9433d93e75ab9bfa0ea375f 100644
--- a/src/heap/gc-tracer.h
+++ b/src/heap/gc-tracer.h
@@ -135,23 +135,23 @@ enum ScavengeSpeedMode { kForAllObjects, kForSurvivedObjects };
class GCTracer {
public:
struct IncrementalMarkingInfos {
- IncrementalMarkingInfos()
- : cumulative_duration(0), longest_step(0), steps(0) {}
+ IncrementalMarkingInfos() : duration(0), longest_step(0), steps(0) {}
void Update(double duration) {
steps++;
- cumulative_duration += duration;
+ this->duration += duration;
if (duration > longest_step) {
longest_step = duration;
}
}
void ResetCurrentCycle() {
+ duration = 0;
longest_step = 0;
steps = 0;
}
- double cumulative_duration;
+ double duration;
double longest_step;
int steps;
};
@@ -243,21 +243,11 @@ class GCTracer {
// Bytes marked since creation of tracer (value at start of event).
intptr_t cumulative_incremental_marking_bytes;
- // Bytes marked since
- // - last event for SCAVENGER events
- // - last INCREMENTAL_MARK_COMPACTOR event for INCREMENTAL_MARK_COMPACTOR
- // events
+ // Bytes marked incrementally for INCREMENTAL_MARK_COMPACTOR
intptr_t incremental_marking_bytes;
- // Cumulative pure duration of incremental marking steps since creation of
- // tracer. (value at start of event)
- double cumulative_pure_incremental_marking_duration;
-
- // Duration of pure incremental marking steps since
- // - last event for SCAVENGER events
- // - last INCREMENTAL_MARK_COMPACTOR event for INCREMENTAL_MARK_COMPACTOR
- // events
- double pure_incremental_marking_duration;
+ // Duration of incremental marking steps for INCREMENTAL_MARK_COMPACTOR.
+ double incremental_marking_duration;
// Amounts of time spent in different scopes during GC.
double scopes[Scope::NUMBER_OF_SCOPES];
@@ -369,7 +359,8 @@ class GCTracer {
DCHECK(scope < Scope::NUMBER_OF_SCOPES);
if (scope >= Scope::FIRST_INCREMENTAL_SCOPE &&
scope <= Scope::LAST_INCREMENTAL_SCOPE) {
- incremental_marking_scopes_[scope].Update(duration);
+ incremental_marking_scopes_[scope - Scope::FIRST_INCREMENTAL_SCOPE]
+ .Update(duration);
} else {
current_.scopes[scope] += duration;
}
@@ -384,6 +375,7 @@ class GCTracer {
FRIEND_TEST(GCTracerTest, RegularScope);
FRIEND_TEST(GCTracerTest, IncrementalMarkingDetails);
FRIEND_TEST(GCTracerTest, IncrementalScope);
+ FRIEND_TEST(GCTracerTest, IncrementalMarkingSpeed);
// Returns the average speed of the events in the buffer.
// If the buffer is empty, the result is 0.
@@ -392,9 +384,9 @@ class GCTracer {
static double AverageSpeed(const RingBuffer<BytesAndDuration>& buffer,
const BytesAndDuration& initial, double time_ms);
- void MergeBaseline(const Event& baseline);
-
void ResetForTesting();
+ void ResetIncrementalMarkingCounters();
+ void RecordIncrementalMarkingSpeed(intptr_t bytes, double duration);
// Print one detailed trace line in name=value format.
// TODO(ernstm): Move to Heap.
@@ -428,26 +420,23 @@ class GCTracer {
// Previous tracer event.
Event previous_;
- // Previous INCREMENTAL_MARK_COMPACTOR event.
- Event previous_incremental_mark_compactor_event_;
+ // Size of incremental marking steps (in bytes) accumulated since the end of
+ // the last mark compact GC.
+ intptr_t incremental_marking_bytes_;
- // Cumulative size of incremental marking steps (in bytes) since creation of
- // tracer.
- intptr_t cumulative_incremental_marking_bytes_;
+ // Duration of incremental marking steps since the end of the last mark-
+ // compact event.
+ double incremental_marking_duration_;
- // Cumulative duration of incremental marking steps since creation of tracer.
- double cumulative_incremental_marking_duration_;
+ double incremental_marking_start_time_;
- // Cumulative duration of pure incremental marking steps since creation of
- // tracer.
- double cumulative_pure_incremental_marking_duration_;
+ double recorded_incremental_marking_speed_;
// Incremental scopes carry more information than just the duration. The infos
// here are merged back upon starting/stopping the GC tracer.
IncrementalMarkingInfos
incremental_marking_scopes_[Scope::NUMBER_OF_INCREMENTAL_SCOPES];
- double incremental_marking_start_time_;
// Timestamp and allocation counter at the last sampled allocation event.
double allocation_time_ms_;
@@ -467,12 +456,11 @@ class GCTracer {
// Separate timer used for --runtime_call_stats
RuntimeCallTimer timer_;
- RingBuffer<BytesAndDuration> recorded_incremental_marking_steps_;
RingBuffer<BytesAndDuration> recorded_scavenges_total_;
RingBuffer<BytesAndDuration> recorded_scavenges_survived_;
RingBuffer<BytesAndDuration> recorded_compactions_;
- RingBuffer<BytesAndDuration> recorded_mark_compacts_;
RingBuffer<BytesAndDuration> recorded_incremental_mark_compacts_;
+ RingBuffer<BytesAndDuration> recorded_mark_compacts_;
RingBuffer<BytesAndDuration> recorded_new_generation_allocations_;
RingBuffer<BytesAndDuration> recorded_old_generation_allocations_;
RingBuffer<double> recorded_context_disposal_times_;
« no previous file with comments | « no previous file | src/heap/gc-tracer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698