Revert of [Tracing] Use TracingCategoryObserver in gc statistics (patchset #5 id:100001 of https://codereview.chromium.org/2459903003/ )
Reason for revert:
Speculative revert for blocking roll:
https://codereview.chromium.org/2473003006/
E.g.:
https://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_rel_ng/builds/331898
Original issue's description:
> [Tracing] Use TracingCategoryObserver in gc statistics
>
> This patch is a follow-up patch to enable gc statistics to use
> TracingCategoryObserver.
>
> Previously we need to pass --track_gc_object_stats to v8 if we want to enable
> gc statistics in tracing. In this patch, we introducce an integer flag
> FLAG_gc_stats, and FLAG_track_gc_object_stats and FLAG_trace_gc_object_stats
> will set it to 0x01, tracing will set it to 0x10 when we start tracing and
> reset the bit when we stop tracing.
>
> BUG=v8:5590
TBR=fmeawad@chromium.org,mlippautz@chromium.org,lpy@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:5590
Review-Url: https://codereview.chromium.org/2477143002
Cr-Commit-Position: refs/heads/master@{#40785}
diff --git a/src/api.cc b/src/api.cc
index c8ad117..20eb44d 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -8087,7 +8087,7 @@
bool Isolate::GetHeapObjectStatisticsAtLastGC(
HeapObjectStatistics* object_statistics, size_t type_index) {
if (!object_statistics) return false;
- if (V8_LIKELY(!i::FLAG_gc_stats)) return false;
+ if (!i::FLAG_track_gc_object_stats) return false;
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
i::Heap* heap = isolate->heap();
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
index bffee1e..6f9248a 100644
--- a/src/bootstrapper.cc
+++ b/src/bootstrapper.cc
@@ -4016,7 +4016,7 @@
InstallExtension(isolate, "v8/gc", &extension_states)) &&
(!FLAG_expose_externalize_string ||
InstallExtension(isolate, "v8/externalize", &extension_states)) &&
- (!FLAG_gc_stats ||
+ (!FLAG_track_gc_object_stats ||
InstallExtension(isolate, "v8/statistics", &extension_states)) &&
(!FLAG_expose_trigger_failure ||
InstallExtension(isolate, "v8/trigger-failure", &extension_states)) &&
diff --git a/src/d8.cc b/src/d8.cc
index 0bedffc..66e3b51 100644
--- a/src/d8.cc
+++ b/src/d8.cc
@@ -2864,7 +2864,7 @@
base::SysInfo::AmountOfVirtualMemory());
Shell::counter_map_ = new CounterMap();
- if (i::FLAG_dump_counters || i::FLAG_gc_stats) {
+ if (i::FLAG_dump_counters || i::FLAG_track_gc_object_stats) {
create_params.counter_lookup_callback = LookupCounter;
create_params.create_histogram_callback = CreateHistogram;
create_params.add_histogram_sample_callback = AddHistogramSample;
diff --git a/src/flag-definitions.h b/src/flag-definitions.h
index f73b7f5..83c0e4c 100644
--- a/src/flag-definitions.h
+++ b/src/flag-definitions.h
@@ -741,10 +741,7 @@
"track object counts and memory usage")
DEFINE_BOOL(trace_gc_object_stats, false,
"trace object counts and memory usage")
-DEFINE_INT(gc_stats, 0, "Used by tracing internally to enable gc statistics")
DEFINE_IMPLICATION(trace_gc_object_stats, track_gc_object_stats)
-DEFINE_VALUE_IMPLICATION(track_gc_object_stats, gc_stats, 1)
-DEFINE_VALUE_IMPLICATION(trace_gc_object_stats, gc_stats, 1)
DEFINE_NEG_IMPLICATION(trace_gc_object_stats, incremental_marking)
DEFINE_BOOL(track_detached_contexts, true,
"track native contexts that are expected to be garbage collected")
diff --git a/src/heap/heap-inl.h b/src/heap/heap-inl.h
index 4932b44..fc487d0 100644
--- a/src/heap/heap-inl.h
+++ b/src/heap/heap-inl.h
@@ -12,7 +12,6 @@
#include "src/heap/heap.h"
#include "src/heap/incremental-marking-inl.h"
#include "src/heap/mark-compact.h"
-#include "src/heap/object-stats.h"
#include "src/heap/remembered-set.h"
#include "src/heap/spaces-inl.h"
#include "src/heap/store-buffer.h"
@@ -810,16 +809,6 @@
set_serialized_templates(templates);
}
-void Heap::CreateObjectStats() {
- if (V8_LIKELY(FLAG_gc_stats == 0)) return;
- if (!live_object_stats_) {
- live_object_stats_ = new ObjectStats(this);
- }
- if (!dead_object_stats_) {
- dead_object_stats_ = new ObjectStats(this);
- }
-}
-
AlwaysAllocateScope::AlwaysAllocateScope(Isolate* isolate)
: heap_(isolate->heap()) {
heap_->always_allocate_scope_count_.Increment(1);
diff --git a/src/heap/heap.cc b/src/heap/heap.cc
index a524af1..7301884 100644
--- a/src/heap/heap.cc
+++ b/src/heap/heap.cc
@@ -5470,7 +5470,7 @@
mark_compact_collector_ = new MarkCompactCollector(this);
gc_idle_time_handler_ = new GCIdleTimeHandler();
memory_reducer_ = new MemoryReducer(this);
- if (V8_UNLIKELY(FLAG_gc_stats)) {
+ if (FLAG_track_gc_object_stats) {
live_object_stats_ = new ObjectStats(this);
dead_object_stats_ = new ObjectStats(this);
}
diff --git a/src/heap/heap.h b/src/heap/heap.h
index f4ef695..c9f79bb 100644
--- a/src/heap/heap.h
+++ b/src/heap/heap.h
@@ -944,9 +944,6 @@
// Returns whether it succeeded.
bool CreateHeapObjects();
- // Create ObjectStats if live_object_stats_ or dead_object_stats_ are nullptr.
- V8_INLINE void CreateObjectStats();
-
// Destroys all memory allocated by the heap.
void TearDown();
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc
index ce7d878..3a88eeb 100644
--- a/src/heap/mark-compact.cc
+++ b/src/heap/mark-compact.cc
@@ -25,7 +25,6 @@
#include "src/heap/spaces-inl.h"
#include "src/ic/ic.h"
#include "src/ic/stub-cache.h"
-#include "src/tracing/tracing-category-observer.h"
#include "src/utils-inl.h"
#include "src/v8.h"
@@ -2237,21 +2236,17 @@
}
void MarkCompactCollector::RecordObjectStats() {
- if (V8_UNLIKELY(FLAG_gc_stats)) {
- heap()->CreateObjectStats();
+ if (FLAG_track_gc_object_stats) {
ObjectStatsVisitor visitor(heap(), heap()->live_object_stats_,
heap()->dead_object_stats_);
VisitAllObjects(&visitor);
- if (V8_UNLIKELY(FLAG_gc_stats &
- v8::tracing::TracingCategoryObserver::ENABLED_BY_TRACING)) {
- std::stringstream live, dead;
- heap()->live_object_stats_->Dump(live);
- heap()->dead_object_stats_->Dump(dead);
- TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("v8.gc_stats"),
- "V8.GC_Objects_Stats", TRACE_EVENT_SCOPE_THREAD,
- "live", TRACE_STR_COPY(live.str().c_str()), "dead",
- TRACE_STR_COPY(dead.str().c_str()));
- }
+ std::stringstream live, dead;
+ heap()->live_object_stats_->Dump(live);
+ heap()->dead_object_stats_->Dump(dead);
+ TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("v8.gc_stats"),
+ "V8.GC_Objects_Stats", TRACE_EVENT_SCOPE_THREAD,
+ "live", TRACE_STR_COPY(live.str().c_str()), "dead",
+ TRACE_STR_COPY(dead.str().c_str()));
if (FLAG_trace_gc_object_stats) {
heap()->live_object_stats_->PrintJSON("live");
heap()->dead_object_stats_->PrintJSON("dead");
diff --git a/src/tracing/tracing-category-observer.cc b/src/tracing/tracing-category-observer.cc
index 9907415..710488a 100644
--- a/src/tracing/tracing-category-observer.cc
+++ b/src/tracing/tracing-category-observer.cc
@@ -18,7 +18,6 @@
v8::internal::V8::GetCurrentPlatform()->AddTraceStateObserver(
TracingCategoryObserver::instance_);
TRACE_EVENT_WARMUP_CATEGORY(TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats"));
- TRACE_EVENT_WARMUP_CATEGORY(TRACE_DISABLED_BY_DEFAULT("v8.gc_stats"));
}
void TracingCategoryObserver::TearDown() {
@@ -34,16 +33,10 @@
if (enabled) {
v8::internal::FLAG_runtime_stats |= ENABLED_BY_TRACING;
}
- TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("v8.gc_stats"),
- &enabled);
- if (enabled) {
- v8::internal::FLAG_gc_stats |= ENABLED_BY_TRACING;
- }
}
void TracingCategoryObserver::OnTraceDisabled() {
v8::internal::FLAG_runtime_stats &= ~ENABLED_BY_TRACING;
- v8::internal::FLAG_gc_stats &= ~ENABLED_BY_TRACING;
}
} // namespace tracing