LibJS+LibWeb: Use new Cell::Visitor helpers to avoid manual iteration

This commit is contained in:
Andreas Kling 2024-04-15 13:58:21 +02:00
commit 53d0dd4a2e
Notes: sideshowbarker 2024-07-17 20:58:35 +09:00
63 changed files with 98 additions and 213 deletions

View file

@ -53,8 +53,7 @@ void Executable::dump() const
void Executable::visit_edges(Visitor& visitor) void Executable::visit_edges(Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto constant : constants) visitor.visit(constants);
visitor.visit(constant);
} }
} }

View file

@ -26,10 +26,8 @@ struct CallFrame {
void visit_edges(Cell::Visitor& visitor) void visit_edges(Cell::Visitor& visitor)
{ {
for (auto const& value : registers()) visitor.visit(registers());
visitor.visit(value); visitor.visit(saved_lexical_environments);
for (auto const& environment : saved_lexical_environments)
visitor.visit(environment);
for (auto& context : unwind_contexts) { for (auto& context : unwind_contexts) {
visitor.visit(context.lexical_environment); visitor.visit(context.lexical_environment);
} }

View file

@ -29,8 +29,7 @@ void CyclicModule::visit_edges(Cell::Visitor& visitor)
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_cycle_root); visitor.visit(m_cycle_root);
visitor.visit(m_top_level_capability); visitor.visit(m_top_level_capability);
for (auto const& module : m_async_parent_modules) visitor.visit(m_async_parent_modules);
visitor.visit(module);
for (auto const& loaded_module : m_loaded_modules) for (auto const& loaded_module : m_loaded_modules)
visitor.visit(loaded_module.module); visitor.visit(loaded_module.module);
} }
@ -40,8 +39,7 @@ void GraphLoadingState::visit_edges(Cell::Visitor& visitor)
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(promise_capability); visitor.visit(promise_capability);
visitor.visit(host_defined); visitor.visit(host_defined);
for (auto module : visited) visitor.visit(visited);
visitor.visit(module);
} }
// 16.2.1.5.1 LoadRequestedModules ( [ hostDefined ] ), https://tc39.es/ecma262/#sec-LoadRequestedModules // 16.2.1.5.1 LoadRequestedModules ( [ hostDefined ] ), https://tc39.es/ecma262/#sec-LoadRequestedModules

View file

@ -102,8 +102,7 @@ void BoundFunction::visit_edges(Visitor& visitor)
visitor.visit(m_bound_target_function); visitor.visit(m_bound_target_function);
visitor.visit(m_bound_this); visitor.visit(m_bound_this);
for (auto argument : m_bound_arguments) visitor.visit(m_bound_arguments);
visitor.visit(argument);
} }
} }

View file

@ -537,8 +537,7 @@ void ECMAScriptFunctionObject::visit_edges(Visitor& visitor)
visitor.visit(m_name_string); visitor.visit(m_name_string);
visitor.visit(m_bytecode_executable); visitor.visit(m_bytecode_executable);
for (auto& executable : m_default_parameter_bytecode_executables) visitor.visit(m_default_parameter_bytecode_executables);
visitor.visit(executable);
for (auto& field : m_fields) { for (auto& field : m_fields) {
if (auto* property_key_ptr = field.name.get_pointer<PropertyKey>(); property_key_ptr && property_key_ptr->is_symbol()) if (auto* property_key_ptr = field.name.get_pointer<PropertyKey>(); property_key_ptr && property_key_ptr->is_symbol())

View file

@ -59,10 +59,8 @@ void ExecutionContext::visit_edges(Cell::Visitor& visitor)
if (instruction_stream_iterator.has_value()) if (instruction_stream_iterator.has_value())
visitor.visit(const_cast<Bytecode::Executable*>(instruction_stream_iterator.value().executable())); visitor.visit(const_cast<Bytecode::Executable*>(instruction_stream_iterator.value().executable()));
visitor.visit(function_name); visitor.visit(function_name);
for (auto argument : arguments) visitor.visit(arguments);
visitor.visit(argument); visitor.visit(locals);
for (auto local : locals)
visitor.visit(local);
script_or_module.visit( script_or_module.visit(
[](Empty) {}, [](Empty) {},
[&](auto& script_or_module) { [&](auto& script_or_module) {

View file

@ -1394,9 +1394,7 @@ void Object::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_shape); visitor.visit(m_shape);
visitor.visit(m_storage);
for (auto& value : m_storage)
visitor.visit(value);
m_indexed_properties.for_each_value([&visitor](auto& value) { m_indexed_properties.for_each_value([&visitor](auto& value) {
visitor.visit(value); visitor.visit(value);

View file

@ -395,10 +395,8 @@ void Promise::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_result); visitor.visit(m_result);
for (auto& reaction : m_fulfill_reactions) visitor.visit(m_fulfill_reactions);
visitor.visit(reaction); visitor.visit(m_reject_reactions);
for (auto& reaction : m_reject_reactions)
visitor.visit(reaction);
} }
} }

View file

@ -24,8 +24,7 @@ JS_DEFINE_ALLOCATOR(PromiseAnyRejectElementFunction);
void PromiseValueList::visit_edges(Visitor& visitor) void PromiseValueList::visit_edges(Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& val : m_values) visitor.visit(m_values);
visitor.visit(val);
} }
PromiseResolvingElementFunction::PromiseResolvingElementFunction(size_t index, PromiseValueList& values, NonnullGCPtr<PromiseCapability const> capability, RemainingElements& remaining_elements, Object& prototype) PromiseResolvingElementFunction::PromiseResolvingElementFunction(size_t index, PromiseValueList& values, NonnullGCPtr<PromiseCapability const> capability, RemainingElements& remaining_elements, Object& prototype)

View file

@ -96,8 +96,7 @@ void Animatable::disassociate_with_animation(JS::NonnullGCPtr<Animation> animati
void Animatable::visit_edges(JS::Cell::Visitor& visitor) void Animatable::visit_edges(JS::Cell::Visitor& visitor)
{ {
for (auto const& animation : m_associated_animations) visitor.visit(m_associated_animations);
visitor.visit(animation);
visitor.visit(m_cached_animation_name_source); visitor.visit(m_cached_animation_name_source);
visitor.visit(m_cached_animation_name_animation); visitor.visit(m_cached_animation_name_animation);
} }

View file

@ -64,8 +64,7 @@ void AnimationTimeline::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_associated_document); visitor.visit(m_associated_document);
for (auto const& animation : m_associated_animations) visitor.visit(m_associated_animations);
visitor.visit(animation);
} }
} }

View file

@ -873,8 +873,7 @@ void KeyframeEffect::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_target_element); visitor.visit(m_target_element);
for (auto const& keyframe : m_keyframe_objects) visitor.visit(m_keyframe_objects);
visitor.visit(keyframe);
} }
static CSS::RequiredInvalidationAfterStyleChange compute_required_invalidation(HashMap<CSS::PropertyID, NonnullRefPtr<CSS::StyleValue const>> const& old_properties, HashMap<CSS::PropertyID, NonnullRefPtr<CSS::StyleValue const>> const& new_properties) static CSS::RequiredInvalidationAfterStyleChange compute_required_invalidation(HashMap<CSS::PropertyID, NonnullRefPtr<CSS::StyleValue const>> const& old_properties, HashMap<CSS::PropertyID, NonnullRefPtr<CSS::StyleValue const>> const& new_properties)

View file

@ -17,13 +17,9 @@ JS_DEFINE_ALLOCATOR(Intrinsics);
void Intrinsics::visit_edges(JS::Cell::Visitor& visitor) void Intrinsics::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_namespaces);
for (auto& it : m_namespaces) visitor.visit(m_prototypes);
visitor.visit(it.value); visitor.visit(m_constructors);
for (auto& it : m_prototypes)
visitor.visit(it.value);
for (auto& it : m_constructors)
visitor.visit(it.value);
visitor.visit(m_realm); visitor.visit(m_realm);
} }

View file

@ -20,8 +20,7 @@ JS::NonnullGCPtr<CSSKeyframesRule> CSSKeyframesRule::create(JS::Realm& realm, Fl
void CSSKeyframesRule::visit_edges(Visitor& visitor) void CSSKeyframesRule::visit_edges(Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& keyframe : m_keyframes) visitor.visit(m_keyframes);
visitor.visit(keyframe);
} }
void CSSKeyframesRule::initialize(JS::Realm& realm) void CSSKeyframesRule::initialize(JS::Realm& realm)

View file

@ -48,8 +48,7 @@ void CSSRuleList::initialize(JS::Realm& realm)
void CSSRuleList::visit_edges(Cell::Visitor& visitor) void CSSRuleList::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& rule : m_rules) visitor.visit(m_rules);
visitor.visit(rule);
} }
bool CSSRuleList::is_supported_property_index(u32 index) const bool CSSRuleList::is_supported_property_index(u32 index) const

View file

@ -122,8 +122,7 @@ void CSSStyleSheet::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_owner_css_rule); visitor.visit(m_owner_css_rule);
visitor.visit(m_default_namespace_rule); visitor.visit(m_default_namespace_rule);
visitor.visit(m_constructor_document); visitor.visit(m_constructor_document);
for (auto& [key, namespace_rule] : m_namespace_rules) visitor.visit(m_namespace_rules);
visitor.visit(namespace_rule);
} }
// https://www.w3.org/TR/cssom/#dom-cssstylesheet-insertrule // https://www.w3.org/TR/cssom/#dom-cssstylesheet-insertrule

View file

@ -87,8 +87,7 @@ void StyleSheetList::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_document); visitor.visit(m_document);
for (auto sheet : m_sheets) visitor.visit(m_sheets);
visitor.visit(sheet);
} }
// https://www.w3.org/TR/cssom/#ref-for-dfn-supported-property-indices%E2%91%A1 // https://www.w3.org/TR/cssom/#ref-for-dfn-supported-property-indices%E2%91%A1

View file

@ -98,14 +98,9 @@ void AbortSignal::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_abort_reason); visitor.visit(m_abort_reason);
for (auto& algorithm : m_abort_algorithms) visitor.visit(m_abort_algorithms);
visitor.visit(algorithm); visitor.visit(m_source_signals);
visitor.visit(m_dependent_signals);
for (auto& source_signal : m_source_signals)
visitor.visit(source_signal);
for (auto& dependent_signal : m_dependent_signals)
visitor.visit(dependent_signal);
} }
// https://dom.spec.whatwg.org/#dom-abortsignal-abort // https://dom.spec.whatwg.org/#dom-abortsignal-abort

View file

@ -76,8 +76,7 @@ void AccessibilityTreeNode::visit_edges(Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_value); visitor.visit(m_value);
for (auto const& child : m_children) visitor.visit(m_children);
visitor.visit(child);
} }
} }

View file

@ -445,44 +445,25 @@ void Document::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_visual_viewport); visitor.visit(m_visual_viewport);
visitor.visit(m_latest_entry); visitor.visit(m_latest_entry);
visitor.visit(m_default_timeline); visitor.visit(m_default_timeline);
visitor.visit(m_scripts_to_execute_when_parsing_has_finished);
visitor.visit(m_scripts_to_execute_in_order_as_soon_as_possible);
visitor.visit(m_scripts_to_execute_as_soon_as_possible);
visitor.visit(m_node_iterators);
visitor.visit(m_document_observers);
visitor.visit(m_pending_scroll_event_targets);
visitor.visit(m_pending_scrollend_event_targets);
visitor.visit(m_intersection_observers);
visitor.visit(m_resize_observers);
for (auto& script : m_scripts_to_execute_when_parsing_has_finished) visitor.visit(m_shared_image_requests);
visitor.visit(script);
for (auto& script : m_scripts_to_execute_in_order_as_soon_as_possible)
visitor.visit(script);
for (auto& script : m_scripts_to_execute_as_soon_as_possible)
visitor.visit(script);
for (auto& node_iterator : m_node_iterators)
visitor.visit(node_iterator);
for (auto& document_observer : m_document_observers)
visitor.visit(document_observer);
for (auto& target : m_pending_scroll_event_targets)
visitor.visit(target);
for (auto& target : m_pending_scrollend_event_targets)
visitor.visit(target);
for (auto& observer : m_intersection_observers)
visitor.visit(observer);
for (auto& observer : m_resize_observers)
visitor.visit(observer);
for (auto& image : m_shared_image_requests)
visitor.visit(image.value);
for (auto& timeline : m_associated_animation_timelines)
visitor.visit(timeline);
visitor.visit(m_associated_animation_timelines);
visitor.visit(m_list_of_available_images); visitor.visit(m_list_of_available_images);
for (auto* form_associated_element : m_form_associated_elements_with_form_attribute) for (auto* form_associated_element : m_form_associated_elements_with_form_attribute)
visitor.visit(form_associated_element->form_associated_element_to_html_element()); visitor.visit(form_associated_element->form_associated_element_to_html_element());
for (auto& element : m_potentially_named_elements) visitor.visit(m_potentially_named_elements);
visitor.visit(element);
for (auto& event : m_pending_animation_event_queue) { for (auto& event : m_pending_animation_event_queue) {
visitor.visit(event.event); visitor.visit(event.event);
@ -491,14 +472,10 @@ void Document::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_adopted_style_sheets); visitor.visit(m_adopted_style_sheets);
for (auto& shadow_root : m_shadow_roots) visitor.visit(m_shadow_roots);
visitor.visit(shadow_root);
for (auto& element : m_top_layer_elements) visitor.visit(m_top_layer_elements);
visitor.visit(element); visitor.visit(m_top_layer_pending_removals);
for (auto& element : m_top_layer_pending_removals)
visitor.visit(element);
} }
// https://w3c.github.io/selection-api/#dom-document-getselection // https://w3c.github.io/selection-api/#dom-document-getselection

View file

@ -99,8 +99,7 @@ void Element::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_shadow_root); visitor.visit(m_shadow_root);
visitor.visit(m_custom_element_definition); visitor.visit(m_custom_element_definition);
if (m_pseudo_element_nodes) { if (m_pseudo_element_nodes) {
for (auto& pseudo_element_layout_node : *m_pseudo_element_nodes) visitor.visit(m_pseudo_element_nodes->span());
visitor.visit(pseudo_element_layout_node);
} }
if (m_registered_intersection_observers) { if (m_registered_intersection_observers) {
for (auto& registered_intersection_observers : *m_registered_intersection_observers) for (auto& registered_intersection_observers : *m_registered_intersection_observers)

View file

@ -64,11 +64,9 @@ void Event::visit_edges(Visitor& visitor)
visitor.visit(it.invocation_target); visitor.visit(it.invocation_target);
visitor.visit(it.shadow_adjusted_target); visitor.visit(it.shadow_adjusted_target);
visitor.visit(it.related_target); visitor.visit(it.related_target);
for (auto& itit : it.touch_target_list) visitor.visit(it.touch_target_list);
visitor.visit(itit);
} }
for (auto& it : m_touch_target_list) visitor.visit(m_touch_target_list);
visitor.visit(it);
} }
// https://dom.spec.whatwg.org/#concept-event-path-append // https://dom.spec.whatwg.org/#concept-event-path-append

View file

@ -69,11 +69,8 @@ void EventTarget::visit_edges(Cell::Visitor& visitor)
Base::visit_edges(visitor); Base::visit_edges(visitor);
if (auto const* data = m_data.ptr()) { if (auto const* data = m_data.ptr()) {
for (auto& event_listener : data->event_listener_list) visitor.visit(data->event_listener_list);
visitor.visit(event_listener); visitor.visit(data->event_handler_map);
for (auto& it : data->event_handler_map)
visitor.visit(it.value);
} }
} }

View file

@ -46,8 +46,7 @@ void HTMLCollection::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_root); visitor.visit(m_root);
for (auto& element : m_cached_elements) visitor.visit(m_cached_elements);
visitor.visit(element);
} }
void HTMLCollection::update_cache_if_needed() const void HTMLCollection::update_cache_if_needed() const

View file

@ -50,8 +50,7 @@ void MutationObserver::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_callback); visitor.visit(m_callback);
for (auto& record : m_record_queue) visitor.visit(m_record_queue);
visitor.visit(record);
} }
// https://dom.spec.whatwg.org/#dom-mutationobserver-observe // https://dom.spec.whatwg.org/#dom-mutationobserver-observe

View file

@ -43,8 +43,7 @@ void NamedNodeMap::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_element); visitor.visit(m_element);
for (auto& attribute : m_attributes) visitor.visit(m_attributes);
visitor.visit(attribute);
} }
// https://dom.spec.whatwg.org/#ref-for-dfn-supported-property-indices%E2%91%A3 // https://dom.spec.whatwg.org/#ref-for-dfn-supported-property-indices%E2%91%A3

View file

@ -106,8 +106,7 @@ void Node::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_paintable); visitor.visit(m_paintable);
if (m_registered_observer_list) { if (m_registered_observer_list) {
for (auto& registered_observer : *m_registered_observer_list) visitor.visit(*m_registered_observer_list);
visitor.visit(registered_observer);
} }
} }

View file

@ -29,8 +29,7 @@ StaticNodeList::~StaticNodeList() = default;
void StaticNodeList::visit_edges(Cell::Visitor& visitor) void StaticNodeList::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& node : m_static_nodes) visitor.visit(m_static_nodes);
visitor.visit(node);
} }
// https://dom.spec.whatwg.org/#dom-nodelist-length // https://dom.spec.whatwg.org/#dom-nodelist-length

View file

@ -34,8 +34,7 @@ void Request::visit_edges(JS::Cell::Visitor& visitor)
m_window.visit( m_window.visit(
[&](JS::GCPtr<HTML::EnvironmentSettingsObject> const& value) { visitor.visit(value); }, [&](JS::GCPtr<HTML::EnvironmentSettingsObject> const& value) { visitor.visit(value); },
[](auto const&) {}); [](auto const&) {});
for (auto const& pending_response : m_pending_responses) visitor.visit(m_pending_responses);
visitor.visit(pending_response);
} }
JS::NonnullGCPtr<Request> Request::create(JS::VM& vm) JS::NonnullGCPtr<Request> Request::create(JS::VM& vm)

View file

@ -66,8 +66,7 @@ WebIDL::ExceptionOr<JS::Value> FileList::item_value(size_t index) const
void FileList::visit_edges(Cell::Visitor& visitor) void FileList::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto file : m_files) visitor.visit(m_files);
visitor.visit(file);
} }
WebIDL::ExceptionOr<void> FileList::serialization_steps(HTML::SerializationRecord& serialized, bool for_storage, HTML::SerializationMemory& memory) WebIDL::ExceptionOr<void> FileList::serialization_steps(HTML::SerializationRecord& serialized, bool for_storage, HTML::SerializationMemory& memory)

View file

@ -40,8 +40,7 @@ void DOMRectList::initialize(JS::Realm& realm)
void DOMRectList::visit_edges(Cell::Visitor& visitor) void DOMRectList::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& rect : m_rects) visitor.visit(m_rects);
visitor.visit(rect);
} }
// https://drafts.fxtf.org/geometry-1/#dom-domrectlist-length // https://drafts.fxtf.org/geometry-1/#dom-domrectlist-length

View file

@ -122,8 +122,7 @@ WebIDL::CallbackType* AudioTrackList::onremovetrack()
void AudioTrackList::visit_edges(JS::Cell::Visitor& visitor) void AudioTrackList::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto const& track : m_audio_tracks) visitor.visit(m_audio_tracks);
visitor.visit(track);
} }
} }

View file

@ -35,8 +35,7 @@ void BrowsingContextGroup::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_page); visitor.visit(m_page);
for (auto& context : m_browsing_context_set) visitor.visit(m_browsing_context_set);
visitor.visit(context);
} }
// https://html.spec.whatwg.org/multipage/document-sequences.html#creating-a-new-browsing-context-group-and-document // https://html.spec.whatwg.org/multipage/document-sequences.html#creating-a-new-browsing-context-group-and-document

View file

@ -12,8 +12,7 @@ void CustomElementDefinition::visit_edges(Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_constructor); visitor.visit(m_constructor);
for (auto& callback : m_lifecycle_callbacks) visitor.visit(m_lifecycle_callbacks);
visitor.visit(callback.value);
} }
} }

View file

@ -39,10 +39,8 @@ void CustomElementRegistry::initialize(JS::Realm& realm)
void CustomElementRegistry::visit_edges(Visitor& visitor) void CustomElementRegistry::visit_edges(Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& definition : m_custom_element_definitions) visitor.visit(m_custom_element_definitions);
visitor.visit(definition); visitor.visit(m_when_defined_promise_map);
for (auto& [name, promise] : m_when_defined_promise_map)
visitor.visit(promise);
} }
// https://webidl.spec.whatwg.org/#es-callback-function // https://webidl.spec.whatwg.org/#es-callback-function

View file

@ -39,9 +39,7 @@ void DocumentState::visit_edges(Cell::Visitor& visitor)
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_document); visitor.visit(m_document);
for (auto& nested_history : m_nested_histories) { for (auto& nested_history : m_nested_histories) {
for (auto& entry : nested_history.entries) { visitor.visit(nested_history.entries);
visitor.visit(entry);
}
} }
} }

View file

@ -37,9 +37,7 @@ void EventLoop::visit_edges(Visitor& visitor)
visitor.visit(m_task_queue); visitor.visit(m_task_queue);
visitor.visit(m_microtask_queue); visitor.visit(m_microtask_queue);
visitor.visit(m_currently_running_task); visitor.visit(m_currently_running_task);
visitor.visit(m_backup_incumbent_settings_object_stack);
for (auto& settings : m_backup_incumbent_settings_object_stack)
visitor.visit(settings);
} }
void EventLoop::schedule() void EventLoop::schedule()

View file

@ -23,8 +23,7 @@ void TaskQueue::visit_edges(Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_event_loop); visitor.visit(m_event_loop);
for (auto& task : m_tasks) visitor.visit(m_tasks);
visitor.visit(task);
} }
void TaskQueue::add(JS::NonnullGCPtr<Task> task) void TaskQueue::add(JS::NonnullGCPtr<Task> task)

View file

@ -59,8 +59,7 @@ void HTMLFormElement::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_elements); visitor.visit(m_elements);
for (auto& element : m_associated_elements) visitor.visit(m_associated_elements);
visitor.visit(element);
visitor.visit(m_planned_navigation); visitor.visit(m_planned_navigation);
} }

View file

@ -90,8 +90,7 @@ void HTMLMediaElement::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_document_observer); visitor.visit(m_document_observer);
visitor.visit(m_source_element_selector); visitor.visit(m_source_element_selector);
visitor.visit(m_fetch_controller); visitor.visit(m_fetch_controller);
for (auto& promise : m_pending_play_promises) visitor.visit(m_pending_play_promises);
visitor.visit(promise);
} }
void HTMLMediaElement::attribute_changed(FlyString const& name, Optional<String> const& value) void HTMLMediaElement::attribute_changed(FlyString const& name, Optional<String> const& value)

View file

@ -35,8 +35,7 @@ Location::~Location() = default;
void Location::visit_edges(Cell::Visitor& visitor) void Location::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& property : m_default_properties) visitor.visit(m_default_properties);
visitor.visit(property);
} }
void Location::initialize(JS::Realm& realm) void Location::initialize(JS::Realm& realm)

View file

@ -49,8 +49,7 @@ void MessageEvent::visit_edges(Cell::Visitor& visitor)
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_data); visitor.visit(m_data);
visitor.visit(m_ports_array); visitor.visit(m_ports_array);
for (auto& port : m_ports) visitor.visit(m_ports);
visitor.visit(port);
} }
Variant<JS::Handle<WindowProxy>, JS::Handle<MessagePort>, Empty> MessageEvent::source() const Variant<JS::Handle<WindowProxy>, JS::Handle<MessagePort>, Empty> MessageEvent::source() const

View file

@ -56,8 +56,7 @@ void NavigateEvent::initialize(JS::Realm& realm)
void NavigateEvent::visit_edges(JS::Cell::Visitor& visitor) void NavigateEvent::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& handler : m_navigation_handler_list) visitor.visit(m_navigation_handler_list);
visitor.visit(handler);
visitor.visit(m_abort_controller); visitor.visit(m_abort_controller);
visitor.visit(m_destination); visitor.visit(m_destination);
visitor.visit(m_signal); visitor.visit(m_signal);

View file

@ -83,14 +83,12 @@ void Navigation::initialize(JS::Realm& realm)
void Navigation::visit_edges(JS::Cell::Visitor& visitor) void Navigation::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& entry : m_entry_list) visitor.visit(m_entry_list);
visitor.visit(entry);
visitor.visit(m_transition); visitor.visit(m_transition);
visitor.visit(m_ongoing_navigate_event); visitor.visit(m_ongoing_navigate_event);
visitor.visit(m_ongoing_api_method_tracker); visitor.visit(m_ongoing_api_method_tracker);
visitor.visit(m_upcoming_non_traverse_api_method_tracker); visitor.visit(m_upcoming_non_traverse_api_method_tracker);
for (auto& key_and_tracker : m_upcoming_traverse_api_method_trackers) visitor.visit(m_upcoming_traverse_api_method_trackers);
visitor.visit(key_and_tracker.value);
} }
// https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigation-entries // https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigation-entries

View file

@ -16,8 +16,7 @@ StackOfOpenElements::~StackOfOpenElements() = default;
void StackOfOpenElements::visit_edges(JS::Cell::Visitor& visitor) void StackOfOpenElements::visit_edges(JS::Cell::Visitor& visitor)
{ {
for (auto& element : m_elements) visitor.visit(m_elements);
visitor.visit(element);
} }
bool StackOfOpenElements::has_in_scope_impl(FlyString const& tag_name, Vector<FlyString> const& list) const bool StackOfOpenElements::has_in_scope_impl(FlyString const& tag_name, Vector<FlyString> const& list) const

View file

@ -17,8 +17,7 @@ void ModuleMap::visit_edges(Visitor& visitor)
visitor.visit(it.value.module_script); visitor.visit(it.value.module_script);
for (auto const& it : m_callbacks) for (auto const& it : m_callbacks)
for (auto const& callback : it.value) visitor.visit(it.value);
visitor.visit(callback);
} }
bool ModuleMap::is_fetching(URL::URL const& url, ByteString const& type) const bool ModuleMap::is_fetching(URL::URL const& url, ByteString const& type) const

View file

@ -43,9 +43,7 @@ SessionHistoryTraversalQueue::SessionHistoryTraversalQueue()
void SessionHistoryTraversalQueue::visit_edges(JS::Cell::Visitor& visitor) void SessionHistoryTraversalQueue::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto const& entry : m_queue) { visitor.visit(m_queue);
visitor.visit(entry);
}
} }
void SessionHistoryTraversalQueue::append(Function<void()> steps) void SessionHistoryTraversalQueue::append(Function<void()> steps)

View file

@ -34,8 +34,7 @@ void TraversableNavigable::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_page); visitor.visit(m_page);
for (auto& entry : m_session_history_entries) visitor.visit(m_session_history_entries);
visitor.visit(entry);
visitor.visit(m_session_history_traversal_queue); visitor.visit(m_session_history_traversal_queue);
} }

View file

@ -129,8 +129,7 @@ WebIDL::CallbackType* VideoTrackList::onremovetrack()
void VideoTrackList::visit_edges(JS::Cell::Visitor& visitor) void VideoTrackList::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto const& track : m_video_tracks) visitor.visit(m_video_tracks);
visitor.visit(track);
} }
} }

View file

@ -126,10 +126,8 @@ void Window::visit_edges(JS::Cell::Visitor& visitor)
visitor.visit(m_navigator); visitor.visit(m_navigator);
visitor.visit(m_navigation); visitor.visit(m_navigation);
visitor.visit(m_custom_element_registry); visitor.visit(m_custom_element_registry);
for (auto& plugin_object : m_pdf_viewer_plugin_objects) visitor.visit(m_pdf_viewer_plugin_objects);
visitor.visit(plugin_object); visitor.visit(m_pdf_viewer_mime_type_objects);
for (auto& mime_type_object : m_pdf_viewer_mime_type_objects)
visitor.visit(mime_type_object);
visitor.visit(m_count_queuing_strategy_size_function); visitor.visit(m_count_queuing_strategy_size_function);
visitor.visit(m_byte_length_queuing_strategy_size_function); visitor.visit(m_byte_length_queuing_strategy_size_function);
} }

View file

@ -65,10 +65,8 @@ void WindowOrWorkerGlobalScopeMixin::visit_edges(JS::Cell::Visitor& visitor)
{ {
visitor.visit(m_performance); visitor.visit(m_performance);
visitor.visit(m_supported_entry_types_array); visitor.visit(m_supported_entry_types_array);
for (auto& it : m_timers) visitor.visit(m_timers);
visitor.visit(it.value); visitor.visit(m_registered_performance_observer_objects);
for (auto& observer : m_registered_performance_observer_objects)
visitor.visit(observer);
for (auto& entry : m_performance_entry_buffer_map) for (auto& entry : m_performance_entry_buffer_map)
entry.value.visit_edges(visitor); entry.value.visit_edges(visitor);
} }

View file

@ -78,10 +78,8 @@ void IntersectionObserver::visit_edges(JS::Cell::Visitor& visitor)
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_root); visitor.visit(m_root);
visitor.visit(m_callback); visitor.visit(m_callback);
for (auto& entry : m_queued_entries) visitor.visit(m_queued_entries);
visitor.visit(entry); visitor.visit(m_observation_targets);
for (auto& target : m_observation_targets)
visitor.visit(target);
} }
// https://w3c.github.io/IntersectionObserver/#dom-intersectionobserver-observe // https://w3c.github.io/IntersectionObserver/#dom-intersectionobserver-observe

View file

@ -518,10 +518,8 @@ void ViewportPaintable::recompute_selection_states()
void ViewportPaintable::visit_edges(Visitor& visitor) void ViewportPaintable::visit_edges(Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto it : scroll_state) visitor.visit(scroll_state);
visitor.visit(it.key); visitor.visit(clip_state);
for (auto it : clip_state)
visitor.visit(it.key);
} }
} }

View file

@ -48,8 +48,7 @@ struct PerformanceEntryTuple {
void visit_edges(JS::Cell::Visitor& visitor) void visit_edges(JS::Cell::Visitor& visitor)
{ {
for (auto& entry : performance_entry_buffer) visitor.visit(performance_entry_buffer);
visitor.visit(entry);
} }
}; };

View file

@ -41,8 +41,7 @@ void PerformanceObserver::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_callback); visitor.visit(m_callback);
for (auto& entry : m_observer_buffer) visitor.visit(m_observer_buffer);
visitor.visit(entry);
} }
// https://w3c.github.io/performance-timeline/#dom-performanceobserver-observe // https://w3c.github.io/performance-timeline/#dom-performanceobserver-observe

View file

@ -32,8 +32,7 @@ void PerformanceObserverEntryList::initialize(JS::Realm& realm)
void PerformanceObserverEntryList::visit_edges(Cell::Visitor& visitor) void PerformanceObserverEntryList::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& entry : m_entry_list) visitor.visit(m_entry_list);
visitor.visit(entry);
} }
// https://www.w3.org/TR/performance-timeline/#dfn-filter-buffer-by-name-and-type // https://www.w3.org/TR/performance-timeline/#dfn-filter-buffer-by-name-and-type

View file

@ -33,8 +33,7 @@ void ResizeObservation::visit_edges(JS::Cell::Visitor& visitor)
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_realm); visitor.visit(m_realm);
visitor.visit(m_target); visitor.visit(m_target);
for (auto& size : m_last_reported_sizes) visitor.visit(m_last_reported_sizes);
visitor.visit(size);
} }
// https://drafts.csswg.org/resize-observer-1/#dom-resizeobservation-isactive // https://drafts.csswg.org/resize-observer-1/#dom-resizeobservation-isactive

View file

@ -43,12 +43,9 @@ void ResizeObserver::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_callback); visitor.visit(m_callback);
for (auto& observation : m_observation_targets) visitor.visit(m_observation_targets);
visitor.visit(observation); visitor.visit(m_active_targets);
for (auto& observation : m_active_targets) visitor.visit(m_skipped_targets);
visitor.visit(observation);
for (auto& observation : m_skipped_targets)
visitor.visit(observation);
} }
void ResizeObserver::finalize() void ResizeObserver::finalize()

View file

@ -68,12 +68,9 @@ void ResizeObserverEntry::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_target); visitor.visit(m_target);
for (auto& size : m_content_box_size) visitor.visit(m_content_box_size);
visitor.visit(size); visitor.visit(m_border_box_size);
for (auto& size : m_border_box_size) visitor.visit(m_device_pixel_content_box_size);
visitor.visit(size);
for (auto& size : m_device_pixel_content_box_size)
visitor.visit(size);
visitor.visit(m_content_rect); visitor.visit(m_content_rect);
} }

View file

@ -56,8 +56,7 @@ void ReadableStreamBYOBReader::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
ReadableStreamGenericReaderMixin::visit_edges(visitor); ReadableStreamGenericReaderMixin::visit_edges(visitor);
for (auto& request : m_read_into_requests) visitor.visit(m_read_into_requests);
visitor.visit(request);
} }
class BYOBReaderReadIntoRequest : public ReadIntoRequest { class BYOBReaderReadIntoRequest : public ReadIntoRequest {

View file

@ -90,10 +90,8 @@ void AudioContext::initialize(JS::Realm& realm)
void AudioContext::visit_edges(Cell::Visitor& visitor) void AudioContext::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
for (auto& promise : m_pending_promises) visitor.visit(m_pending_promises);
visitor.visit(promise); visitor.visit(m_pending_resume_promises);
for (auto& promise : m_pending_resume_promises)
visitor.visit(promise);
} }
// https://www.w3.org/TR/webaudio/#dom-audiocontext-getoutputtimestamp // https://www.w3.org/TR/webaudio/#dom-audiocontext-getoutputtimestamp

View file

@ -192,9 +192,7 @@ struct WaitForAllResults : JS::Cell {
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(success_steps); visitor.visit(success_steps);
for (auto& value : result) { visitor.visit(result);
visitor.visit(value);
}
} }
JS::NonnullGCPtr<JS::HeapFunction<void(Vector<JS::Value> const&)>> success_steps; JS::NonnullGCPtr<JS::HeapFunction<void(Vector<JS::Value> const&)>> success_steps;

View file

@ -126,8 +126,7 @@ void PageClient::visit_edges(JS::Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_page); visitor.visit(m_page);
for (auto document : m_console_clients.keys()) visitor.visit(m_console_clients);
visitor.visit(document);
} }
ConnectionFromClient& PageClient::client() const ConnectionFromClient& PageClient::client() const