diff --git a/Userland/Libraries/LibJS/AST.cpp b/Userland/Libraries/LibJS/AST.cpp index c578678051..92fcda3fca 100644 --- a/Userland/Libraries/LibJS/AST.cpp +++ b/Userland/Libraries/LibJS/AST.cpp @@ -3778,7 +3778,7 @@ ThrowCompletionOr TaggedTemplateLiteral::get_template_object(Interpreter& MUST(template_->set_integrity_level(Object::IntegrityLevel::Frozen)); // 15. Append the Record { [[Site]]: templateLiteral, [[Array]]: template } to templateRegistry. - m_cached_values.set(&realm, make_handle(template_.ptr())); + m_cached_values.set(&realm, make_handle(template_)); // 16. Return template. return template_; diff --git a/Userland/Libraries/LibJS/Heap/Handle.h b/Userland/Libraries/LibJS/Heap/Handle.h index 3daf556829..cfcf70e9bc 100644 --- a/Userland/Libraries/LibJS/Heap/Handle.h +++ b/Userland/Libraries/LibJS/Heap/Handle.h @@ -121,6 +121,20 @@ inline Handle make_handle(T& cell) return Handle::create(&cell); } +template +inline Handle make_handle(GCPtr cell) +{ + if (!cell) + return Handle {}; + return Handle::create(cell.ptr()); +} + +template +inline Handle make_handle(NonnullGCPtr cell) +{ + return Handle::create(cell.ptr()); +} + template<> class Handle { public: diff --git a/Userland/Libraries/LibWeb/Fetch/FetchMethod.cpp b/Userland/Libraries/LibWeb/Fetch/FetchMethod.cpp index 70646402d8..bd910b3965 100644 --- a/Userland/Libraries/LibWeb/Fetch/FetchMethod.cpp +++ b/Userland/Libraries/LibWeb/Fetch/FetchMethod.cpp @@ -107,7 +107,7 @@ JS::NonnullGCPtr fetch_impl(JS::VM& vm, RequestInfo const& input, R // 4. Set responseObject to the result of creating a Response object, given response, "immutable", and // relevantRealm. auto response_object = Response::create(relevant_realm, response, Headers::Guard::Immutable); - response_object_handle = JS::make_handle(response_object.ptr()); + response_object_handle = JS::make_handle(response_object); // 5. Resolve p with responseObject. WebIDL::resolve_promise(vm, promise_capability, response_object); diff --git a/Userland/Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp b/Userland/Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp index ebb01a6018..94120c1150 100644 --- a/Userland/Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp +++ b/Userland/Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp @@ -323,7 +323,7 @@ Vector> EventLoop::documents_in_this_event_loop() cons Vector> documents; for (auto& document : m_documents) { VERIFY(document); - documents.append(JS::make_handle(*document.ptr())); + documents.append(JS::make_handle(*document)); } return documents; } diff --git a/Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp b/Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp index fb12da26a6..4a001fc4f6 100644 --- a/Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp +++ b/Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp @@ -1174,7 +1174,7 @@ Create: auto new_element = insert_html_element(HTMLToken::make_start_tag(entry->element->local_name())); // 9. Replace the entry for entry in the list with an entry for new element. - m_list_of_active_formatting_elements.entries().at(index).element = JS::make_handle(new_element.ptr()); + m_list_of_active_formatting_elements.entries().at(index).element = JS::make_handle(new_element); // 10. If the entry for new element in the list of active formatting elements is not the last entry in the list, return to the step labeled advance. if (index != m_list_of_active_formatting_elements.entries().size() - 1)