LibGC: Add a ForeignCell class for ownership of non-C++ objects

This will allow us to use the GC to manage the lifetime of objects
that are not C++ objects, such as Swift objects. In the future we
could expand this cursed FFI to other languages as well.
This commit is contained in:
Andrew Kaster 2024-11-16 14:56:27 -07:00 committed by Andrew Kaster
commit 829391e714
Notes: github-actions[bot] 2024-11-19 21:54:22 +00:00
11 changed files with 281 additions and 0 deletions

View file

@ -7,6 +7,7 @@
// RUN: %clang++ -cc1 -verify %plugin_opts% %s 2>&1
// expected-no-diagnostics
#include <LibGC/ForeignCell.h>
#include <LibJS/Runtime/PrototypeObject.h>
#include <LibWeb/Bindings/PlatformObject.h>
@ -14,6 +15,10 @@ class TestCellClass : JS::Cell {
GC_CELL(TestCellClass, JS::Cell);
};
class TestForeignCellClass : GC::ForeignCell {
FOREIGN_CELL(TestForeignCellClass, GC::ForeignCell);
};
class TestObjectClass : JS::Object {
JS_OBJECT(TestObjectClass, JS::Object);
};