summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc')
-rw-r--r--chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc b/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc
index d0f3e987df9..795d282271c 100644
--- a/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc
+++ b/chromium/third_party/blink/renderer/bindings/core/v8/v8_gc_controller.cc
@@ -115,7 +115,7 @@ class MinorGCUnmodifiedWrapperVisitor : public v8::PersistentHandleVisitor {
}
if (class_id == WrapperTypeInfo::kNodeClassId) {
- DCHECK(V8Node::hasInstance(wrapper, isolate_));
+ DCHECK(V8Node::HasInstance(wrapper, isolate_));
Node* node = V8Node::ToImpl(wrapper);
if (node->HasEventListeners()) {
v8::Persistent<v8::Object>::Cast(*value).MarkActive();
@@ -147,12 +147,21 @@ void VisitWeakHandlesForMinorGC(v8::Isolate* isolate) {
isolate->VisitWeakHandles(&visitor);
}
+bool IsNestedInV8GC(ThreadState* thread_state, v8::GCType type) {
+ return thread_state && (type == v8::kGCTypeMarkSweepCompact ||
+ type == v8::kGCTypeIncrementalMarking);
+}
+
} // namespace
void V8GCController::GcPrologue(v8::Isolate* isolate,
v8::GCType type,
v8::GCCallbackFlags flags) {
RUNTIME_CALL_TIMER_SCOPE(isolate, RuntimeCallStats::CounterId::kGcPrologue);
+ ThreadHeapStatsCollector::BlinkGCInV8Scope nested_scope(
+ IsNestedInV8GC(ThreadState::Current(), type)
+ ? ThreadState::Current()->Heap().stats_collector()
+ : nullptr);
ScriptForbiddenScope::Enter();
// Attribute garbage collection to the all frames instead of a specific
@@ -264,6 +273,10 @@ void V8GCController::GcEpilogue(v8::Isolate* isolate,
v8::GCType type,
v8::GCCallbackFlags flags) {
RUNTIME_CALL_TIMER_SCOPE(isolate, RuntimeCallStats::CounterId::kGcEpilogue);
+ ThreadHeapStatsCollector::BlinkGCInV8Scope nested_scope(
+ IsNestedInV8GC(ThreadState::Current(), type)
+ ? ThreadState::Current()->Heap().stats_collector()
+ : nullptr);
UpdateCollectedPhantomHandles(isolate);
switch (type) {
case v8::kGCTypeScavenge:
@@ -309,7 +322,7 @@ void V8GCController::GcEpilogue(v8::Isolate* isolate,
TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"),
"UpdateCounters", TRACE_EVENT_SCOPE_THREAD, "data",
- InspectorUpdateCountersEvent::Data());
+ inspector_update_counters_event::Data());
}
void V8GCController::CollectAllGarbageForTesting(