1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 00:07:43 +00:00

test-js: Add a mark_as_garbage method to force GC to collect that object

This should fix the flaky tests of test-js.
It also fixes the tests when running with the -g flag since the values
will not be garbage collected too soon.
This commit is contained in:
davidot 2021-09-07 17:14:05 +02:00 committed by Linus Groh
parent 3373090993
commit 43b17f27a3
6 changed files with 71 additions and 12 deletions

View file

@ -191,9 +191,15 @@ public:
void Heap::mark_live_cells(const HashTable<Cell*>& roots)
{
dbgln_if(HEAP_DEBUG, "mark_live_cells:");
MarkingVisitor visitor;
for (auto* root : roots)
visitor.visit(root);
for (auto& inverse_root : m_uprooted_cells)
inverse_root->set_marked(false);
m_uprooted_cells.clear();
}
void Heap::sweep_dead_cells(bool print_report, const Core::ElapsedTimer& measurement_timer)
@ -327,4 +333,9 @@ void Heap::undefer_gc(Badge<DeferGC>)
}
}
void Heap::uproot_cell(Cell* cell)
{
m_uprooted_cells.append(cell);
}
}

View file

@ -83,6 +83,8 @@ public:
BlockAllocator& block_allocator() { return m_block_allocator; }
void uproot_cell(Cell* cell);
private:
Cell* allocate_cell(size_t);
@ -117,6 +119,8 @@ private:
WeakContainer::List m_weak_containers;
Vector<Cell*> m_uprooted_cells;
BlockAllocator m_block_allocator;
size_t m_gc_deferrals { 0 };