LibJS: Add make_handle({Nonnull,}GCPtr<T>) overloads

This commit is contained in:
Linus Groh 2022-12-14 18:37:37 +00:00 committed by Tim Flynn
parent 029db614e3
commit 2a66fc6cae
Notes: sideshowbarker 2024-07-17 06:09:44 +09:00
5 changed files with 18 additions and 4 deletions
Userland/Libraries
LibJS
LibWeb

View file

@ -3778,7 +3778,7 @@ ThrowCompletionOr<Value> 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_;

View file

@ -121,6 +121,20 @@ inline Handle<T> make_handle(T& cell)
return Handle<T>::create(&cell);
}
template<class T>
inline Handle<T> make_handle(GCPtr<T> cell)
{
if (!cell)
return Handle<T> {};
return Handle<T>::create(cell.ptr());
}
template<class T>
inline Handle<T> make_handle(NonnullGCPtr<T> cell)
{
return Handle<T>::create(cell.ptr());
}
template<>
class Handle<Value> {
public:

View file

@ -107,7 +107,7 @@ JS::NonnullGCPtr<JS::Promise> 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);

View file

@ -323,7 +323,7 @@ Vector<JS::Handle<DOM::Document>> EventLoop::documents_in_this_event_loop() cons
Vector<JS::Handle<DOM::Document>> documents;
for (auto& document : m_documents) {
VERIFY(document);
documents.append(JS::make_handle(*document.ptr()));
documents.append(JS::make_handle(*document));
}
return documents;
}

View file

@ -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)