There's no need to make the m_audio_tracks entries heap roots, we can visit them instead.
@@ -119,4 +119,11 @@ WebIDL::CallbackType* AudioTrackList::onremovetrack()
return event_handler_attribute(HTML::EventNames::removetrack);
}
+void AudioTrackList::visit_edges(JS::Cell::Visitor& visitor)
+{
+ Base::visit_edges(visitor);
+ for (auto const& track : m_audio_tracks)
+ visitor.visit(track);
+}
+
@@ -49,6 +49,8 @@ public:
private:
explicit AudioTrackList(JS::Realm&);
+ virtual void visit_edges(Visitor&) override;
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<Optional<JS::PropertyDescriptor>> internal_get_own_property(JS::PropertyKey const& property_name) const override;
@@ -17,7 +17,6 @@ JS_DEFINE_ALLOCATOR(VideoTrackList);
VideoTrackList::VideoTrackList(JS::Realm& realm)
: DOM::EventTarget(realm, MayInterfereWithIndexedPropertyAccess::Yes)
- , m_video_tracks(realm.heap())
{
@@ -47,7 +47,7 @@ private:
- JS::MarkedVector<JS::NonnullGCPtr<VideoTrack>> m_video_tracks;
+ Vector<JS::NonnullGCPtr<VideoTrack>> m_video_tracks;
};