mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 19:59:17 +00:00
LibWeb: Make Agent's MutationObserver list weak
Before this change, Agent held on to all of the live MutationObserver objects via GC::Root. This prevented them from ever getting garbage-collected. Instead of roots, we now use a simple IntrusiveList and remove them from it in the finalizer for MutationObserver. This fixes a massive GC leak on Speedometer.
This commit is contained in:
parent
f1801fb1d2
commit
53c9c6f3ee
Notes:
github-actions[bot]
2025-02-07 15:54:21 +00:00
Author: https://github.com/awesomekling
Commit: 53c9c6f3ee
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3488
Reviewed-by: https://github.com/shannonbooth
4 changed files with 14 additions and 6 deletions
|
@ -675,7 +675,7 @@ void queue_mutation_observer_microtask(DOM::Document const& document)
|
|||
// 2. Let notifySet be a clone of the surrounding agent’s mutation observers.
|
||||
GC::RootVector<DOM::MutationObserver*> notify_set(heap);
|
||||
for (auto& observer : surrounding_agent.mutation_observers)
|
||||
notify_set.append(observer);
|
||||
notify_set.append(&observer);
|
||||
|
||||
// FIXME: 3. Let signalSet be a clone of the surrounding agent’s signal slots.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue