diff options
Diffstat (limited to 'deps/v8/src/heap/gc-tracer.h')
-rw-r--r-- | deps/v8/src/heap/gc-tracer.h | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/deps/v8/src/heap/gc-tracer.h b/deps/v8/src/heap/gc-tracer.h index ec54b6c1ab..454bb9ff17 100644 --- a/deps/v8/src/heap/gc-tracer.h +++ b/deps/v8/src/heap/gc-tracer.h @@ -31,9 +31,12 @@ enum ScavengeSpeedMode { kForAllObjects, kForSurvivedObjects }; TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.gc"), \ GCTracer::Scope::Name(gc_tracer_scope_id)) -#define TRACE_BACKGROUND_GC(tracer, scope_id) \ - GCTracer::BackgroundScope background_scope(tracer, scope_id); \ - TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.gc"), \ +#define TRACE_BACKGROUND_GC(tracer, scope_id) \ + WorkerThreadRuntimeCallStatsScope runtime_call_stats_scope( \ + tracer->worker_thread_runtime_call_stats()); \ + GCTracer::BackgroundScope background_scope(tracer, scope_id, \ + runtime_call_stats_scope.Get()); \ + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.gc"), \ GCTracer::BackgroundScope::Name(scope_id)) // GCTracer collects and prints ONE line after each garbage collector @@ -82,7 +85,8 @@ class V8_EXPORT_PRIVATE GCTracer { FIRST_TOP_MC_SCOPE = MC_CLEAR, LAST_TOP_MC_SCOPE = MC_SWEEP, FIRST_MINOR_GC_BACKGROUND_SCOPE = MINOR_MC_BACKGROUND_EVACUATE_COPY, - LAST_MINOR_GC_BACKGROUND_SCOPE = SCAVENGER_BACKGROUND_SCAVENGE_PARALLEL + LAST_MINOR_GC_BACKGROUND_SCOPE = SCAVENGER_BACKGROUND_SCAVENGE_PARALLEL, + FIRST_BACKGROUND_SCOPE = FIRST_GENERAL_BACKGROUND_SCOPE }; Scope(GCTracer* tracer, ScopeId scope); @@ -113,7 +117,8 @@ class V8_EXPORT_PRIVATE GCTracer { FIRST_MINOR_GC_BACKGROUND_SCOPE = MINOR_MC_BACKGROUND_EVACUATE_COPY, LAST_MINOR_GC_BACKGROUND_SCOPE = SCAVENGER_BACKGROUND_SCAVENGE_PARALLEL }; - BackgroundScope(GCTracer* tracer, ScopeId scope); + BackgroundScope(GCTracer* tracer, ScopeId scope, + RuntimeCallStats* runtime_stats); ~BackgroundScope(); static const char* Name(ScopeId id); @@ -123,8 +128,7 @@ class V8_EXPORT_PRIVATE GCTracer { ScopeId scope_; double start_time_; RuntimeCallTimer timer_; - RuntimeCallCounter counter_; - bool runtime_stats_enabled_; + RuntimeCallStats* runtime_stats_; DISALLOW_COPY_AND_ASSIGN(BackgroundScope); }; @@ -206,6 +210,8 @@ class V8_EXPORT_PRIVATE GCTracer { double optional_speed); static RuntimeCallCounterId RCSCounterFromScope(Scope::ScopeId id); + static RuntimeCallCounterId RCSCounterFromBackgroundScope( + BackgroundScope::ScopeId id); explicit GCTracer(Heap* heap); @@ -340,13 +346,15 @@ class V8_EXPORT_PRIVATE GCTracer { } } - void AddBackgroundScopeSample(BackgroundScope::ScopeId scope, double duration, - RuntimeCallCounter* runtime_call_counter); + void AddBackgroundScopeSample(BackgroundScope::ScopeId scope, + double duration); void RecordGCPhasesHistograms(TimedHistogram* gc_timer); void RecordEmbedderSpeed(size_t bytes, double duration); + WorkerThreadRuntimeCallStats* worker_thread_runtime_call_stats(); + private: FRIEND_TEST(GCTracer, AverageSpeed); FRIEND_TEST(GCTracerTest, AllocationThroughput); @@ -369,7 +377,6 @@ class V8_EXPORT_PRIVATE GCTracer { struct BackgroundCounter { double total_duration_ms; - RuntimeCallCounter runtime_call_counter; }; // Returns the average speed of the events in the buffer. |