[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>
diff --git a/runtime/vm/heap/marker.cc b/runtime/vm/heap/marker.cc
index 38f1cfe..fb64d4d 100644
--- a/runtime/vm/heap/marker.cc
+++ b/runtime/vm/heap/marker.cc
@@ -442,13 +442,7 @@
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 @@
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 @@
}
private:
- ClassTable* class_table_;
-
DISALLOW_COPY_AND_ASSIGN(MarkingWeakVisitor);
};
diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc
index c6522e7..d827b5c 100644
--- a/runtime/vm/heap/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -564,20 +564,29 @@
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 @@
}
private:
- Scavenger* scavenger_;
- ClassTable* class_table_;
-
DISALLOW_COPY_AND_ASSIGN(ScavengerWeakVisitor);
};
@@ -1195,27 +1201,10 @@
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);
}
diff --git a/runtime/vm/heap/scavenger.h b/runtime/vm/heap/scavenger.h
index 126235e..8ff4c90 100644
--- a/runtime/vm/heap/scavenger.h
+++ b/runtime/vm/heap/scavenger.h
@@ -278,8 +278,6 @@
void MournWeakHandles();
void Epilogue(SemiSpace* from);
- bool IsUnreachable(ObjectPtr* p);
-
void VerifyStoreBuffers();
void UpdateMaxHeapCapacity();