From a429d2ff91b9038e7475eeeb43045ea1e4ff5eef Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Fri, 9 Dec 2022 22:22:28 +0000 Subject: [PATCH] [vm, gc] Remove dead code from weak handle visitors. TEST=ci Change-Id: I10619b7970de19047c9af77fc82dc9d3009f34f2 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/274801 Commit-Queue: Ryan Macnak Reviewed-by: Siva Annamalai --- runtime/vm/heap/marker.cc | 14 ++--------- runtime/vm/heap/scavenger.cc | 45 ++++++++++++++---------------------- runtime/vm/heap/scavenger.h | 2 -- 3 files changed, 19 insertions(+), 42 deletions(-) diff --git a/runtime/vm/heap/marker.cc b/runtime/vm/heap/marker.cc index 38f1cfeccdf..fb64d4de3a0 100644 --- a/runtime/vm/heap/marker.cc +++ b/runtime/vm/heap/marker.cc @@ -442,13 +442,7 @@ typedef MarkingVisitorBase UnsyncMarkingVisitor; typedef MarkingVisitorBase SyncMarkingVisitor; static bool IsUnreachable(const ObjectPtr raw_obj) { - if (!raw_obj->IsHeapObject()) { - return false; - } - if (raw_obj == Object::null()) { - return true; - } - if (!raw_obj->IsOldObject()) { + if (raw_obj->IsSmiOrNewObject()) { return false; } return !raw_obj->untag()->IsMarked(); @@ -456,9 +450,7 @@ static bool IsUnreachable(const ObjectPtr raw_obj) { class MarkingWeakVisitor : public HandleVisitor { public: - explicit MarkingWeakVisitor(Thread* thread) - : HandleVisitor(thread), - class_table_(thread->isolate_group()->class_table()) {} + explicit MarkingWeakVisitor(Thread* thread) : HandleVisitor(thread) {} void VisitHandle(uword addr) { FinalizablePersistentHandle* handle = @@ -470,8 +462,6 @@ class MarkingWeakVisitor : public HandleVisitor { } private: - ClassTable* class_table_; - DISALLOW_COPY_AND_ASSIGN(MarkingWeakVisitor); }; diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc index c6522e71090..d827b5c6264 100644 --- a/runtime/vm/heap/scavenger.cc +++ b/runtime/vm/heap/scavenger.cc @@ -564,20 +564,29 @@ class ScavengerVisitorBase : public ObjectPointerVisitor { typedef ScavengerVisitorBase SerialScavengerVisitor; typedef ScavengerVisitorBase ParallelScavengerVisitor; +static bool IsUnreachable(ObjectPtr* ptr) { + ObjectPtr raw_obj = *ptr; + if (raw_obj->IsSmiOrOldObject()) { + return false; + } + uword raw_addr = UntaggedObject::ToAddr(raw_obj); + uword header = *reinterpret_cast(raw_addr); + if (IsForwarding(header)) { + *ptr = ForwardedObj(header); + return false; + } + return true; +} + class ScavengerWeakVisitor : public HandleVisitor { public: - ScavengerWeakVisitor(Thread* thread, Scavenger* scavenger) - : HandleVisitor(thread), - scavenger_(scavenger), - class_table_(thread->isolate_group()->class_table()) { - ASSERT(scavenger->heap_->isolate_group() == thread->isolate_group()); - } + explicit ScavengerWeakVisitor(Thread* thread) : HandleVisitor(thread) {} void VisitHandle(uword addr) { FinalizablePersistentHandle* handle = reinterpret_cast(addr); ObjectPtr* p = handle->ptr_addr(); - if (scavenger_->IsUnreachable(p)) { + if (IsUnreachable(p)) { handle->UpdateUnreachable(thread()->isolate_group()); } else { handle->UpdateRelocated(thread()->isolate_group()); @@ -585,9 +594,6 @@ class ScavengerWeakVisitor : public HandleVisitor { } private: - Scavenger* scavenger_; - ClassTable* class_table_; - DISALLOW_COPY_AND_ASSIGN(ScavengerWeakVisitor); }; @@ -1195,27 +1201,10 @@ void Scavenger::IterateRoots(ScavengerVisitorBase* visitor) { IterateRememberedCards(visitor); } -bool Scavenger::IsUnreachable(ObjectPtr* p) { - ObjectPtr raw_obj = *p; - if (!raw_obj->IsHeapObject()) { - return false; - } - if (!raw_obj->IsNewObject()) { - return false; - } - uword raw_addr = UntaggedObject::ToAddr(raw_obj); - uword header = *reinterpret_cast(raw_addr); - if (IsForwarding(header)) { - *p = ForwardedObj(header); - return false; - } - return true; -} - void Scavenger::MournWeakHandles() { Thread* thread = Thread::Current(); TIMELINE_FUNCTION_GC_DURATION(thread, "MournWeakHandles"); - ScavengerWeakVisitor weak_visitor(thread, this); + ScavengerWeakVisitor weak_visitor(thread); heap_->isolate_group()->VisitWeakPersistentHandles(&weak_visitor); } diff --git a/runtime/vm/heap/scavenger.h b/runtime/vm/heap/scavenger.h index 126235ee29f..8ff4c903a32 100644 --- a/runtime/vm/heap/scavenger.h +++ b/runtime/vm/heap/scavenger.h @@ -278,8 +278,6 @@ class Scavenger { void MournWeakHandles(); void Epilogue(SemiSpace* from); - bool IsUnreachable(ObjectPtr* p); - void VerifyStoreBuffers(); void UpdateMaxHeapCapacity();