LibJS: Don't allocate property table during GC marking phase

Shape was allocating property tables inside visit_children(), which
could cause garbage collection to happen. It's not very good to start
a new garbage collection while you are in the middle of one already.
This commit is contained in:
Andreas Kling 2020-09-20 19:11:49 +02:00
parent 4036ff9d91
commit 893df28e80
Notes: sideshowbarker 2024-07-19 02:19:33 +09:00

View file

@ -104,9 +104,10 @@ void Shape::visit_children(Cell::Visitor& visitor)
for (auto& it : m_forward_transitions)
visitor.visit(it.value);
ensure_property_table();
for (auto& it : *m_property_table)
it.key.visit_children(visitor);
if (m_property_table) {
for (auto& it : *m_property_table)
it.key.visit_children(visitor);
}
}
Optional<PropertyMetadata> Shape::lookup(const StringOrSymbol& property_name) const