1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:47:35 +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

@ -15,6 +15,7 @@ struct HeapRoot {
HeapFunctionCapturedPointer,
Handle,
MarkedVector,
ConservativeVector,
RegisterPointer,
SafeFunction,
StackPointer,