[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 <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
This commit is contained in:
Ryan Macnak 2022-12-09 22:22:28 +00:00 committed by Commit Queue
parent d9482e35ce
commit a429d2ff91
3 changed files with 19 additions and 42 deletions

View file

@ -442,13 +442,7 @@ typedef MarkingVisitorBase<false> UnsyncMarkingVisitor;
typedef MarkingVisitorBase<true> 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);
};

View file

@ -564,20 +564,29 @@ class ScavengerVisitorBase : public ObjectPointerVisitor {
typedef ScavengerVisitorBase<false> SerialScavengerVisitor;
typedef ScavengerVisitorBase<true> 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<uword*>(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<FinalizablePersistentHandle*>(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<parallel>* 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<uword*>(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);
}

View file

@ -278,8 +278,6 @@ class Scavenger {
void MournWeakHandles();
void Epilogue(SemiSpace* from);
bool IsUnreachable(ObjectPtr* p);
void VerifyStoreBuffers();
void UpdateMaxHeapCapacity();