From 0585029c30ce20da06f26d19149d3feccb56ed08 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Sun, 2 Oct 2022 11:40:34 +0100 Subject: [PATCH] LibJS: Add Visitor::visit(GCPtr) and Visitor::visit(NonnullGCPtr) Let's avoid reaching for ptr() as much as possible. --- Userland/Libraries/LibJS/Heap/Cell.h | 12 ++++++++++++ .../Libraries/LibJS/Runtime/FinalizationRegistry.cpp | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) 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);