diff --git a/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.cpp b/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.cpp index f6e2cc18f1..ee63d93006 100644 --- a/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.cpp +++ b/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.cpp @@ -12,7 +12,7 @@ namespace JS { FinalizationRegistry::FinalizationRegistry(Realm& realm, JobCallback cleanup_callback, Object& prototype) : Object(prototype) , WeakContainer(heap()) - , m_realm(make_handle(realm)) + , m_realm(realm) , m_cleanup_callback(move(cleanup_callback)) { } @@ -82,6 +82,7 @@ ThrowCompletionOr FinalizationRegistry::cleanup(Optional call void FinalizationRegistry::visit_edges(Cell::Visitor& visitor) { Base::visit_edges(visitor); + visitor.visit(m_realm.ptr()); for (auto& record : m_records) { visitor.visit(record.held_value); visitor.visit(record.unregister_token); diff --git a/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.h b/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.h index 39a2573a3f..792738e399 100644 --- a/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.h +++ b/Userland/Libraries/LibJS/Runtime/FinalizationRegistry.h @@ -7,6 +7,7 @@ #pragma once #include +#include #include #include #include @@ -30,8 +31,8 @@ public: virtual void remove_dead_cells(Badge) override; - Realm& realm() { return *m_realm.cell(); } - Realm const& realm() const { return *m_realm.cell(); } + Realm& realm() { return *m_realm; } + Realm const& realm() const { return *m_realm; } JobCallback& cleanup_callback() { return m_cleanup_callback; } JobCallback const& cleanup_callback() const { return m_cleanup_callback; } @@ -41,7 +42,7 @@ private: virtual void visit_edges(Visitor& visitor) override; - Handle m_realm; + NonnullGCPtr m_realm; JobCallback m_cleanup_callback; struct FinalizationRecord {