Browse Source

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

Andreas Kling 1 year ago
parent
commit
53d0dd4a2e
63 changed files with 100 additions and 215 deletions
  1. 1 2
      Userland/Libraries/LibJS/Bytecode/Executable.cpp
  2. 2 4
      Userland/Libraries/LibJS/Bytecode/Interpreter.h
  3. 2 4
      Userland/Libraries/LibJS/CyclicModule.cpp
  4. 1 2
      Userland/Libraries/LibJS/Runtime/BoundFunction.cpp
  5. 1 2
      Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp
  6. 2 4
      Userland/Libraries/LibJS/Runtime/ExecutionContext.cpp
  7. 1 3
      Userland/Libraries/LibJS/Runtime/Object.cpp
  8. 2 4
      Userland/Libraries/LibJS/Runtime/Promise.cpp
  9. 1 2
      Userland/Libraries/LibJS/Runtime/PromiseResolvingElementFunctions.cpp
  10. 1 2
      Userland/Libraries/LibWeb/Animations/Animatable.cpp
  11. 1 2
      Userland/Libraries/LibWeb/Animations/AnimationTimeline.cpp
  12. 1 2
      Userland/Libraries/LibWeb/Animations/KeyframeEffect.cpp
  13. 3 7
      Userland/Libraries/LibWeb/Bindings/Intrinsics.cpp
  14. 1 2
      Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp
  15. 1 2
      Userland/Libraries/LibWeb/CSS/CSSRuleList.cpp
  16. 1 2
      Userland/Libraries/LibWeb/CSS/CSSStyleSheet.cpp
  17. 1 2
      Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp
  18. 3 8
      Userland/Libraries/LibWeb/DOM/AbortSignal.cpp
  19. 1 2
      Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.cpp
  20. 17 40
      Userland/Libraries/LibWeb/DOM/Document.cpp
  21. 1 2
      Userland/Libraries/LibWeb/DOM/Element.cpp
  22. 2 4
      Userland/Libraries/LibWeb/DOM/Event.cpp
  23. 2 5
      Userland/Libraries/LibWeb/DOM/EventTarget.cpp
  24. 1 2
      Userland/Libraries/LibWeb/DOM/HTMLCollection.cpp
  25. 1 2
      Userland/Libraries/LibWeb/DOM/MutationObserver.cpp
  26. 1 2
      Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp
  27. 1 2
      Userland/Libraries/LibWeb/DOM/Node.cpp
  28. 1 2
      Userland/Libraries/LibWeb/DOM/StaticNodeList.cpp
  29. 1 2
      Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Requests.cpp
  30. 1 2
      Userland/Libraries/LibWeb/FileAPI/FileList.cpp
  31. 1 2
      Userland/Libraries/LibWeb/Geometry/DOMRectList.cpp
  32. 1 2
      Userland/Libraries/LibWeb/HTML/AudioTrackList.cpp
  33. 1 2
      Userland/Libraries/LibWeb/HTML/BrowsingContextGroup.cpp
  34. 1 2
      Userland/Libraries/LibWeb/HTML/CustomElements/CustomElementDefinition.cpp
  35. 2 4
      Userland/Libraries/LibWeb/HTML/CustomElements/CustomElementRegistry.cpp
  36. 1 3
      Userland/Libraries/LibWeb/HTML/DocumentState.cpp
  37. 1 3
      Userland/Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
  38. 1 2
      Userland/Libraries/LibWeb/HTML/EventLoop/TaskQueue.cpp
  39. 1 2
      Userland/Libraries/LibWeb/HTML/HTMLFormElement.cpp
  40. 1 2
      Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
  41. 1 2
      Userland/Libraries/LibWeb/HTML/Location.cpp
  42. 1 2
      Userland/Libraries/LibWeb/HTML/MessageEvent.cpp
  43. 1 2
      Userland/Libraries/LibWeb/HTML/NavigateEvent.cpp
  44. 2 4
      Userland/Libraries/LibWeb/HTML/Navigation.cpp
  45. 1 2
      Userland/Libraries/LibWeb/HTML/Parser/StackOfOpenElements.cpp
  46. 1 2
      Userland/Libraries/LibWeb/HTML/Scripting/ModuleMap.cpp
  47. 1 3
      Userland/Libraries/LibWeb/HTML/SessionHistoryTraversalQueue.cpp
  48. 1 2
      Userland/Libraries/LibWeb/HTML/TraversableNavigable.cpp
  49. 1 2
      Userland/Libraries/LibWeb/HTML/VideoTrackList.cpp
  50. 2 4
      Userland/Libraries/LibWeb/HTML/Window.cpp
  51. 2 4
      Userland/Libraries/LibWeb/HTML/WindowOrWorkerGlobalScope.cpp
  52. 2 4
      Userland/Libraries/LibWeb/IntersectionObserver/IntersectionObserver.cpp
  53. 2 4
      Userland/Libraries/LibWeb/Painting/ViewportPaintable.cpp
  54. 1 2
      Userland/Libraries/LibWeb/PerformanceTimeline/PerformanceEntryTuple.h
  55. 1 2
      Userland/Libraries/LibWeb/PerformanceTimeline/PerformanceObserver.cpp
  56. 1 2
      Userland/Libraries/LibWeb/PerformanceTimeline/PerformanceObserverEntryList.cpp
  57. 1 2
      Userland/Libraries/LibWeb/ResizeObserver/ResizeObservation.cpp
  58. 3 6
      Userland/Libraries/LibWeb/ResizeObserver/ResizeObserver.cpp
  59. 3 6
      Userland/Libraries/LibWeb/ResizeObserver/ResizeObserverEntry.cpp
  60. 1 2
      Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.cpp
  61. 2 4
      Userland/Libraries/LibWeb/WebAudio/AudioContext.cpp
  62. 1 3
      Userland/Libraries/LibWeb/WebIDL/Promise.cpp
  63. 1 2
      Userland/Services/WebContent/PageClient.cpp

+ 1 - 2
Userland/Libraries/LibJS/Bytecode/Executable.cpp

@@ -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(constant);
+    visitor.visit(constants);
 }
 }
 
 
 }
 }

+ 2 - 4
Userland/Libraries/LibJS/Bytecode/Interpreter.h

@@ -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(value);
-        for (auto const& environment : saved_lexical_environments)
-            visitor.visit(environment);
+        visitor.visit(registers());
+        visitor.visit(saved_lexical_environments);
         for (auto& context : unwind_contexts) {
         for (auto& context : unwind_contexts) {
             visitor.visit(context.lexical_environment);
             visitor.visit(context.lexical_environment);
         }
         }

+ 2 - 4
Userland/Libraries/LibJS/CyclicModule.cpp

@@ -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(module);
+    visitor.visit(m_async_parent_modules);
     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(module);
+    visitor.visit(visited);
 }
 }
 
 
 // 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

+ 1 - 2
Userland/Libraries/LibJS/Runtime/BoundFunction.cpp

@@ -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(argument);
+    visitor.visit(m_bound_arguments);
 }
 }
 
 
 }
 }

+ 1 - 2
Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp

@@ -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(executable);
+    visitor.visit(m_default_parameter_bytecode_executables);
 
 
     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())

+ 2 - 4
Userland/Libraries/LibJS/Runtime/ExecutionContext.cpp

@@ -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(argument);
-    for (auto local : locals)
-        visitor.visit(local);
+    visitor.visit(arguments);
+    visitor.visit(locals);
     script_or_module.visit(
     script_or_module.visit(
         [](Empty) {},
         [](Empty) {},
         [&](auto& script_or_module) {
         [&](auto& script_or_module) {

+ 1 - 3
Userland/Libraries/LibJS/Runtime/Object.cpp

@@ -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);
-
-    for (auto& value : m_storage)
-        visitor.visit(value);
+    visitor.visit(m_storage);
 
 
     m_indexed_properties.for_each_value([&visitor](auto& value) {
     m_indexed_properties.for_each_value([&visitor](auto& value) {
         visitor.visit(value);
         visitor.visit(value);

+ 2 - 4
Userland/Libraries/LibJS/Runtime/Promise.cpp

@@ -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(reaction);
-    for (auto& reaction : m_reject_reactions)
-        visitor.visit(reaction);
+    visitor.visit(m_fulfill_reactions);
+    visitor.visit(m_reject_reactions);
 }
 }
 
 
 }
 }

+ 1 - 2
Userland/Libraries/LibJS/Runtime/PromiseResolvingElementFunctions.cpp

@@ -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(val);
+    visitor.visit(m_values);
 }
 }
 
 
 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)

+ 1 - 2
Userland/Libraries/LibWeb/Animations/Animatable.cpp

@@ -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(animation);
+    visitor.visit(m_associated_animations);
     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);
 }
 }

+ 1 - 2
Userland/Libraries/LibWeb/Animations/AnimationTimeline.cpp

@@ -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(animation);
+    visitor.visit(m_associated_animations);
 }
 }
 
 
 }
 }

+ 1 - 2
Userland/Libraries/LibWeb/Animations/KeyframeEffect.cpp

@@ -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(keyframe);
+    visitor.visit(m_keyframe_objects);
 }
 }
 
 
 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)

+ 3 - 7
Userland/Libraries/LibWeb/Bindings/Intrinsics.cpp

@@ -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);
-
-    for (auto& it : m_namespaces)
-        visitor.visit(it.value);
-    for (auto& it : m_prototypes)
-        visitor.visit(it.value);
-    for (auto& it : m_constructors)
-        visitor.visit(it.value);
+    visitor.visit(m_namespaces);
+    visitor.visit(m_prototypes);
+    visitor.visit(m_constructors);
     visitor.visit(m_realm);
     visitor.visit(m_realm);
 }
 }
 
 

+ 1 - 2
Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp

@@ -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(keyframe);
+    visitor.visit(m_keyframes);
 }
 }
 
 
 void CSSKeyframesRule::initialize(JS::Realm& realm)
 void CSSKeyframesRule::initialize(JS::Realm& realm)

+ 1 - 2
Userland/Libraries/LibWeb/CSS/CSSRuleList.cpp

@@ -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(rule);
+    visitor.visit(m_rules);
 }
 }
 
 
 bool CSSRuleList::is_supported_property_index(u32 index) const
 bool CSSRuleList::is_supported_property_index(u32 index) const

+ 1 - 2
Userland/Libraries/LibWeb/CSS/CSSStyleSheet.cpp

@@ -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(namespace_rule);
+    visitor.visit(m_namespace_rules);
 }
 }
 
 
 // https://www.w3.org/TR/cssom/#dom-cssstylesheet-insertrule
 // https://www.w3.org/TR/cssom/#dom-cssstylesheet-insertrule

+ 1 - 2
Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp

@@ -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(sheet);
+    visitor.visit(m_sheets);
 }
 }
 
 
 // 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

+ 3 - 8
Userland/Libraries/LibWeb/DOM/AbortSignal.cpp

@@ -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(algorithm);
-
-    for (auto& source_signal : m_source_signals)
-        visitor.visit(source_signal);
-
-    for (auto& dependent_signal : m_dependent_signals)
-        visitor.visit(dependent_signal);
+    visitor.visit(m_abort_algorithms);
+    visitor.visit(m_source_signals);
+    visitor.visit(m_dependent_signals);
 }
 }
 
 
 // https://dom.spec.whatwg.org/#dom-abortsignal-abort
 // https://dom.spec.whatwg.org/#dom-abortsignal-abort

+ 1 - 2
Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.cpp

@@ -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(child);
+    visitor.visit(m_children);
 }
 }
 
 
 }
 }

+ 17 - 40
Userland/Libraries/LibWeb/DOM/Document.cpp

@@ -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);
-
-    for (auto& script : m_scripts_to_execute_when_parsing_has_finished)
-        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_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);
+
+    visitor.visit(m_shared_image_requests);
+
+    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(element);
+    visitor.visit(m_potentially_named_elements);
 
 
     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(shadow_root);
-
-    for (auto& element : m_top_layer_elements)
-        visitor.visit(element);
+    visitor.visit(m_shadow_roots);
 
 
-    for (auto& element : m_top_layer_pending_removals)
-        visitor.visit(element);
+    visitor.visit(m_top_layer_elements);
+    visitor.visit(m_top_layer_pending_removals);
 }
 }
 
 
 // https://w3c.github.io/selection-api/#dom-document-getselection
 // https://w3c.github.io/selection-api/#dom-document-getselection

+ 1 - 2
Userland/Libraries/LibWeb/DOM/Element.cpp

@@ -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(pseudo_element_layout_node);
+        visitor.visit(m_pseudo_element_nodes->span());
     }
     }
     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)

+ 2 - 4
Userland/Libraries/LibWeb/DOM/Event.cpp

@@ -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(itit);
+        visitor.visit(it.touch_target_list);
     }
     }
-    for (auto& it : m_touch_target_list)
-        visitor.visit(it);
+    visitor.visit(m_touch_target_list);
 }
 }
 
 
 // https://dom.spec.whatwg.org/#concept-event-path-append
 // https://dom.spec.whatwg.org/#concept-event-path-append

+ 2 - 5
Userland/Libraries/LibWeb/DOM/EventTarget.cpp

@@ -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(event_listener);
-
-        for (auto& it : data->event_handler_map)
-            visitor.visit(it.value);
+        visitor.visit(data->event_listener_list);
+        visitor.visit(data->event_handler_map);
     }
     }
 }
 }
 
 

+ 1 - 2
Userland/Libraries/LibWeb/DOM/HTMLCollection.cpp

@@ -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(element);
+    visitor.visit(m_cached_elements);
 }
 }
 
 
 void HTMLCollection::update_cache_if_needed() const
 void HTMLCollection::update_cache_if_needed() const

+ 1 - 2
Userland/Libraries/LibWeb/DOM/MutationObserver.cpp

@@ -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(record);
+    visitor.visit(m_record_queue);
 }
 }
 
 
 // https://dom.spec.whatwg.org/#dom-mutationobserver-observe
 // https://dom.spec.whatwg.org/#dom-mutationobserver-observe

+ 1 - 2
Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp

@@ -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(attribute);
+    visitor.visit(m_attributes);
 }
 }
 
 
 // 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

+ 1 - 2
Userland/Libraries/LibWeb/DOM/Node.cpp

@@ -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(registered_observer);
+        visitor.visit(*m_registered_observer_list);
     }
     }
 }
 }
 
 

+ 1 - 2
Userland/Libraries/LibWeb/DOM/StaticNodeList.cpp

@@ -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(node);
+    visitor.visit(m_static_nodes);
 }
 }
 
 
 // https://dom.spec.whatwg.org/#dom-nodelist-length
 // https://dom.spec.whatwg.org/#dom-nodelist-length

+ 1 - 2
Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Requests.cpp

@@ -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(pending_response);
+    visitor.visit(m_pending_responses);
 }
 }
 
 
 JS::NonnullGCPtr<Request> Request::create(JS::VM& vm)
 JS::NonnullGCPtr<Request> Request::create(JS::VM& vm)

+ 1 - 2
Userland/Libraries/LibWeb/FileAPI/FileList.cpp

@@ -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(file);
+    visitor.visit(m_files);
 }
 }
 
 
 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)

+ 1 - 2
Userland/Libraries/LibWeb/Geometry/DOMRectList.cpp

@@ -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(rect);
+    visitor.visit(m_rects);
 }
 }
 
 
 // https://drafts.fxtf.org/geometry-1/#dom-domrectlist-length
 // https://drafts.fxtf.org/geometry-1/#dom-domrectlist-length

+ 1 - 2
Userland/Libraries/LibWeb/HTML/AudioTrackList.cpp

@@ -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(track);
+    visitor.visit(m_audio_tracks);
 }
 }
 
 
 }
 }

+ 1 - 2
Userland/Libraries/LibWeb/HTML/BrowsingContextGroup.cpp

@@ -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(context);
+    visitor.visit(m_browsing_context_set);
 }
 }
 
 
 // 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

+ 1 - 2
Userland/Libraries/LibWeb/HTML/CustomElements/CustomElementDefinition.cpp

@@ -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(callback.value);
+    visitor.visit(m_lifecycle_callbacks);
 }
 }
 
 
 }
 }

+ 2 - 4
Userland/Libraries/LibWeb/HTML/CustomElements/CustomElementRegistry.cpp

@@ -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(definition);
-    for (auto& [name, promise] : m_when_defined_promise_map)
-        visitor.visit(promise);
+    visitor.visit(m_custom_element_definitions);
+    visitor.visit(m_when_defined_promise_map);
 }
 }
 
 
 // https://webidl.spec.whatwg.org/#es-callback-function
 // https://webidl.spec.whatwg.org/#es-callback-function

+ 1 - 3
Userland/Libraries/LibWeb/HTML/DocumentState.cpp

@@ -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(entry);
-        }
+        visitor.visit(nested_history.entries);
     }
     }
 }
 }
 
 

+ 1 - 3
Userland/Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp

@@ -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);
-
-    for (auto& settings : m_backup_incumbent_settings_object_stack)
-        visitor.visit(settings);
+    visitor.visit(m_backup_incumbent_settings_object_stack);
 }
 }
 
 
 void EventLoop::schedule()
 void EventLoop::schedule()

+ 1 - 2
Userland/Libraries/LibWeb/HTML/EventLoop/TaskQueue.cpp

@@ -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(task);
+    visitor.visit(m_tasks);
 }
 }
 
 
 void TaskQueue::add(JS::NonnullGCPtr<Task> task)
 void TaskQueue::add(JS::NonnullGCPtr<Task> task)

+ 1 - 2
Userland/Libraries/LibWeb/HTML/HTMLFormElement.cpp

@@ -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(element);
+    visitor.visit(m_associated_elements);
     visitor.visit(m_planned_navigation);
     visitor.visit(m_planned_navigation);
 }
 }
 
 

+ 1 - 2
Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp

@@ -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(promise);
+    visitor.visit(m_pending_play_promises);
 }
 }
 
 
 void HTMLMediaElement::attribute_changed(FlyString const& name, Optional<String> const& value)
 void HTMLMediaElement::attribute_changed(FlyString const& name, Optional<String> const& value)

+ 1 - 2
Userland/Libraries/LibWeb/HTML/Location.cpp

@@ -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(property);
+    visitor.visit(m_default_properties);
 }
 }
 
 
 void Location::initialize(JS::Realm& realm)
 void Location::initialize(JS::Realm& realm)

+ 1 - 2
Userland/Libraries/LibWeb/HTML/MessageEvent.cpp

@@ -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(port);
+    visitor.visit(m_ports);
 }
 }
 
 
 Variant<JS::Handle<WindowProxy>, JS::Handle<MessagePort>, Empty> MessageEvent::source() const
 Variant<JS::Handle<WindowProxy>, JS::Handle<MessagePort>, Empty> MessageEvent::source() const

+ 1 - 2
Userland/Libraries/LibWeb/HTML/NavigateEvent.cpp

@@ -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(handler);
+    visitor.visit(m_navigation_handler_list);
     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);

+ 2 - 4
Userland/Libraries/LibWeb/HTML/Navigation.cpp

@@ -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(entry);
+    visitor.visit(m_entry_list);
     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(key_and_tracker.value);
+    visitor.visit(m_upcoming_traverse_api_method_trackers);
 }
 }
 
 
 // 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

+ 1 - 2
Userland/Libraries/LibWeb/HTML/Parser/StackOfOpenElements.cpp

@@ -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(element);
+    visitor.visit(m_elements);
 }
 }
 
 
 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

+ 1 - 2
Userland/Libraries/LibWeb/HTML/Scripting/ModuleMap.cpp

@@ -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(callback);
+        visitor.visit(it.value);
 }
 }
 
 
 bool ModuleMap::is_fetching(URL::URL const& url, ByteString const& type) const
 bool ModuleMap::is_fetching(URL::URL const& url, ByteString const& type) const

+ 1 - 3
Userland/Libraries/LibWeb/HTML/SessionHistoryTraversalQueue.cpp

@@ -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(entry);
-    }
+    visitor.visit(m_queue);
 }
 }
 
 
 void SessionHistoryTraversalQueue::append(Function<void()> steps)
 void SessionHistoryTraversalQueue::append(Function<void()> steps)

+ 1 - 2
Userland/Libraries/LibWeb/HTML/TraversableNavigable.cpp

@@ -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(entry);
+    visitor.visit(m_session_history_entries);
     visitor.visit(m_session_history_traversal_queue);
     visitor.visit(m_session_history_traversal_queue);
 }
 }
 
 

+ 1 - 2
Userland/Libraries/LibWeb/HTML/VideoTrackList.cpp

@@ -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(track);
+    visitor.visit(m_video_tracks);
 }
 }
 
 
 }
 }

+ 2 - 4
Userland/Libraries/LibWeb/HTML/Window.cpp

@@ -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(plugin_object);
-    for (auto& mime_type_object : m_pdf_viewer_mime_type_objects)
-        visitor.visit(mime_type_object);
+    visitor.visit(m_pdf_viewer_plugin_objects);
+    visitor.visit(m_pdf_viewer_mime_type_objects);
     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);
 }
 }

+ 2 - 4
Userland/Libraries/LibWeb/HTML/WindowOrWorkerGlobalScope.cpp

@@ -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(it.value);
-    for (auto& observer : m_registered_performance_observer_objects)
-        visitor.visit(observer);
+    visitor.visit(m_timers);
+    visitor.visit(m_registered_performance_observer_objects);
     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);
 }
 }

+ 2 - 4
Userland/Libraries/LibWeb/IntersectionObserver/IntersectionObserver.cpp

@@ -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(entry);
-    for (auto& target : m_observation_targets)
-        visitor.visit(target);
+    visitor.visit(m_queued_entries);
+    visitor.visit(m_observation_targets);
 }
 }
 
 
 // https://w3c.github.io/IntersectionObserver/#dom-intersectionobserver-observe
 // https://w3c.github.io/IntersectionObserver/#dom-intersectionobserver-observe

+ 2 - 4
Userland/Libraries/LibWeb/Painting/ViewportPaintable.cpp

@@ -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(it.key);
-    for (auto it : clip_state)
-        visitor.visit(it.key);
+    visitor.visit(scroll_state);
+    visitor.visit(clip_state);
 }
 }
 
 
 }
 }

+ 1 - 2
Userland/Libraries/LibWeb/PerformanceTimeline/PerformanceEntryTuple.h

@@ -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(entry);
+        visitor.visit(performance_entry_buffer);
     }
     }
 };
 };
 
 

+ 1 - 2
Userland/Libraries/LibWeb/PerformanceTimeline/PerformanceObserver.cpp

@@ -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(entry);
+    visitor.visit(m_observer_buffer);
 }
 }
 
 
 // https://w3c.github.io/performance-timeline/#dom-performanceobserver-observe
 // https://w3c.github.io/performance-timeline/#dom-performanceobserver-observe

+ 1 - 2
Userland/Libraries/LibWeb/PerformanceTimeline/PerformanceObserverEntryList.cpp

@@ -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(entry);
+    visitor.visit(m_entry_list);
 }
 }
 
 
 // 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

+ 1 - 2
Userland/Libraries/LibWeb/ResizeObserver/ResizeObservation.cpp

@@ -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(size);
+    visitor.visit(m_last_reported_sizes);
 }
 }
 
 
 // https://drafts.csswg.org/resize-observer-1/#dom-resizeobservation-isactive
 // https://drafts.csswg.org/resize-observer-1/#dom-resizeobservation-isactive

+ 3 - 6
Userland/Libraries/LibWeb/ResizeObserver/ResizeObserver.cpp

@@ -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(observation);
-    for (auto& observation : m_active_targets)
-        visitor.visit(observation);
-    for (auto& observation : m_skipped_targets)
-        visitor.visit(observation);
+    visitor.visit(m_observation_targets);
+    visitor.visit(m_active_targets);
+    visitor.visit(m_skipped_targets);
 }
 }
 
 
 void ResizeObserver::finalize()
 void ResizeObserver::finalize()

+ 3 - 6
Userland/Libraries/LibWeb/ResizeObserver/ResizeObserverEntry.cpp

@@ -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(size);
-    for (auto& size : m_border_box_size)
-        visitor.visit(size);
-    for (auto& size : m_device_pixel_content_box_size)
-        visitor.visit(size);
+    visitor.visit(m_content_box_size);
+    visitor.visit(m_border_box_size);
+    visitor.visit(m_device_pixel_content_box_size);
     visitor.visit(m_content_rect);
     visitor.visit(m_content_rect);
 }
 }
 
 

+ 1 - 2
Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.cpp

@@ -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(request);
+    visitor.visit(m_read_into_requests);
 }
 }
 
 
 class BYOBReaderReadIntoRequest : public ReadIntoRequest {
 class BYOBReaderReadIntoRequest : public ReadIntoRequest {

+ 2 - 4
Userland/Libraries/LibWeb/WebAudio/AudioContext.cpp

@@ -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(promise);
-    for (auto& promise : m_pending_resume_promises)
-        visitor.visit(promise);
+    visitor.visit(m_pending_promises);
+    visitor.visit(m_pending_resume_promises);
 }
 }
 
 
 // https://www.w3.org/TR/webaudio/#dom-audiocontext-getoutputtimestamp
 // https://www.w3.org/TR/webaudio/#dom-audiocontext-getoutputtimestamp

+ 1 - 3
Userland/Libraries/LibWeb/WebIDL/Promise.cpp

@@ -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(value);
-        }
+        visitor.visit(result);
     }
     }
 
 
     JS::NonnullGCPtr<JS::HeapFunction<void(Vector<JS::Value> const&)>> success_steps;
     JS::NonnullGCPtr<JS::HeapFunction<void(Vector<JS::Value> const&)>> success_steps;

+ 1 - 2
Userland/Services/WebContent/PageClient.cpp

@@ -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(document);
+    visitor.visit(m_console_clients);
 }
 }
 
 
 ConnectionFromClient& PageClient::client() const
 ConnectionFromClient& PageClient::client() const