|
@@ -25,14 +25,9 @@ WeakMap::~WeakMap()
|
|
|
|
|
|
void WeakMap::remove_dead_cells(Badge<Heap>)
|
|
|
{
|
|
|
- // FIXME: Do this in a single pass.
|
|
|
- Vector<Cell*> to_remove;
|
|
|
- for (auto& it : m_values) {
|
|
|
- if (it.key->state() != Cell::State::Live)
|
|
|
- to_remove.append(it.key);
|
|
|
- }
|
|
|
- for (auto* cell : to_remove)
|
|
|
- m_values.remove(cell);
|
|
|
+ m_values.remove_all_matching([](Cell* key, Value) {
|
|
|
+ return key->state() != Cell::State::Live;
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
void WeakMap::visit_edges(Visitor& visitor)
|