summaryrefslogtreecommitdiff
path: root/deps/v8/src/heap/gc-tracer.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/heap/gc-tracer.h')
-rw-r--r--deps/v8/src/heap/gc-tracer.h27
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.