diff --git a/Userland/Libraries/LibJS/Heap/Cell.h b/Userland/Libraries/LibJS/Heap/Cell.h index fc266b4ccb..c870a998ee 100644 --- a/Userland/Libraries/LibJS/Heap/Cell.h +++ b/Userland/Libraries/LibJS/Heap/Cell.h @@ -11,6 +11,7 @@ #include #include #include +#include namespace JS { @@ -55,6 +56,17 @@ public: { visit_impl(cell); } + template + void visit(GCPtr cell) + { + if (cell) + visit_impl(*cell.ptr()); + } + template + void visit(NonnullGCPtr cell) + { + visit_impl(*cell.ptr()); + } void visit(Value); protected: diff --git a/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.cpp b/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.cpp index ee63d93006..a11ba51d45 100644 --- a/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.cpp +++ b/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.cpp @@ -82,7 +82,7 @@ ThrowCompletionOr FinalizationRegistry::cleanup(Optional call void FinalizationRegistry::visit_edges(Cell::Visitor& visitor) { Base::visit_edges(visitor); - visitor.visit(m_realm.ptr()); + visitor.visit(m_realm); for (auto& record : m_records) { visitor.visit(record.held_value); visitor.visit(record.unregister_token);