1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:17:35 +00:00

LibJS: Use a work queue instead of the C++ stack for the GC mark phase

This fixes an issue where we'd run out of C++ stack while traversing
large GC heap graphs.
This commit is contained in:
Andreas Kling 2023-01-10 20:17:29 +01:00 committed by Tim Flynn
parent 5dcc58d54a
commit 7826cb2556
2 changed files with 30 additions and 5 deletions

View file

@ -0,0 +1,11 @@
test("garbage collection of a deeply-nested object graph", () => {
let root = {};
let o = root;
for (let i = 0; i < 200_000; ++i) {
o.next = {};
o = o.next;
}
gc();
});