1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 22:08:10 +00:00

LibJS: Add ConservativeVector<T>

This works very similarly to MarkedVector<T>, but instead of expecting
T to be Value or a GC-allocated pointer type, T can be anything.
Every pointer-sized value in the vector's storage will be checked during
conservative root scanning.

In other words, this allows you to put something like this in a
ConservativeVector<Foo> and it will be protected from GC:

    struct Foo {
        i64 number;
        Value some_value;
        GCPtr<Object> some_object;
    };
This commit is contained in:
Andreas Kling 2024-02-22 13:18:31 +01:00
parent cbecd096c2
commit 4bbb0a5c35
8 changed files with 126 additions and 1 deletions

View file

@ -44,6 +44,7 @@ shared_library("LibJS") {
"Heap/BlockAllocator.cpp",
"Heap/Cell.cpp",
"Heap/CellAllocator.cpp",
"Heap/ConservativeVector.cpp",
"Heap/Handle.cpp",
"Heap/Heap.cpp",
"Heap/HeapBlock.cpp",