ladybird/Libraries/LibGC
Andreas Kling 4a3ee27702 LibGC: Use Vector::grow_capacity() in MarkingVisitor
Using ensure_capacity() was a mistake, as that API is for specifying an
exact needed capacity, while grow_capacity() is for growing at a
reasonable rate.

Amusingly, we ended up with very different behavior on macOS and Linux
here, since ensure_capacity() calls kmalloc_good_size() which quantizes
to malloc bucket sizes on macOS, but is effectively a no-op on Linux.

Extreme slowdown on Linux caught by GarBench/marking-stress.js
2026-01-08 21:42:01 +01:00
..
BlockAllocator.cpp LibGC: Use mach_vm_map() for BlockAllocator on macOS 2025-12-19 20:21:07 -06:00
BlockAllocator.h LibGC: Add allocator statistics to post-GC report 2025-12-19 20:21:07 -06:00
Cell.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Cell.h LibGC: Make MarkingVisitor better at bulk-visiting Vector<JS::Value> 2026-01-07 20:51:17 +01:00
CellAllocator.cpp LibGC: Only call finalize() on types that override finalize() 2026-01-07 20:51:17 +01:00
CellAllocator.h LibGC: Only call finalize() on types that override finalize() 2026-01-07 20:51:17 +01:00
CMakeLists.txt LibGC: Add GC::Weak<T> as an alternative to AK::WeakPtr<T> 2025-10-17 17:22:16 +02:00
ConservativeVector.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
ConservativeVector.h LibGC: Allow construction of ConservativeVector from Vector 2025-12-26 19:48:46 +01:00
DeferGC.h LibGC: Enable EXPLICIT_SYMBOL_EXPORT 2025-06-30 10:50:36 -06:00
ForeignCell.cpp LibGC: Add a ForeignCell class for ownership of non-C++ objects 2024-11-19 14:32:11 -07:00
ForeignCell.h LibGC: Only call finalize() on types that override finalize() 2026-01-07 20:51:17 +01:00
Forward.h LibGC: Add GC::Weak<T> as an alternative to AK::WeakPtr<T> 2025-10-17 17:22:16 +02:00
Function.h LibGC: Mark GC::Function and create_function as ESCAPING 2024-12-10 07:13:00 +01:00
Heap+Swift.swift LibGC: Teach Swift bindings about Cell and Cell::Visitor 2025-04-03 16:47:48 -06:00
Heap.cpp LibGC: Use Vector::grow_capacity() in MarkingVisitor 2026-01-08 21:42:01 +01:00
Heap.h LibGC: Remove one redundant HeapBlock enumeration pass in GC 2026-01-07 20:51:17 +01:00
HeapBlock.cpp LibGC: Only call finalize() on types that override finalize() 2026-01-07 20:51:17 +01:00
HeapBlock.h LibGC: Only call finalize() on types that override finalize() 2026-01-07 20:51:17 +01:00
HeapRoot.h LibGC: Introduce separate GC root type for "must survive GC" cells 2025-12-27 19:06:56 +01:00
HeapVector.h LibGC: Add GC::HeapVector<T>, a fully GC-aware vector container 2025-12-25 20:21:37 +01:00
Internals.h LibGC: Always use 16 KiB as HeapBlock size 2025-12-19 20:21:07 -06:00
NanBoxedValue.h LibGC: Enable EXPLICIT_SYMBOL_EXPORT 2025-06-30 10:50:36 -06:00
Ptr.h LibGC: Delete operators ! and bool from GC::Ref 2025-10-29 21:20:10 +01:00
Root.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Root.h LibGC: Make GC::Root bool operator explicit 2025-08-21 12:50:43 -04:00
RootHashMap.cpp LibGC: Add GC::RootHashMap<...> template container 2025-05-03 17:33:54 +02:00
RootHashMap.h LibGC: Enable EXPLICIT_SYMBOL_EXPORT 2025-06-30 10:50:36 -06:00
RootVector.cpp LibGC: Allow move-assigning RootVector instances 2025-04-19 02:03:43 +02:00
RootVector.h LibGC: Enable EXPLICIT_SYMBOL_EXPORT 2025-06-30 10:50:36 -06:00
Weak.h LibGC: Allow move/copy construction of Weak<T> from Weak<T> 2025-12-24 10:19:28 +01:00
WeakBlock.cpp LibGC: Add GC::Weak<T> as an alternative to AK::WeakPtr<T> 2025-10-17 17:22:16 +02:00
WeakBlock.h LibGC: Add GC::Weak<T> as an alternative to AK::WeakPtr<T> 2025-10-17 17:22:16 +02:00
WeakContainer.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
WeakContainer.h LibGC: Enable EXPLICIT_SYMBOL_EXPORT 2025-06-30 10:50:36 -06:00
WeakInlines.h LibGC: Add GC::Weak<T> as an alternative to AK::WeakPtr<T> 2025-10-17 17:22:16 +02:00