mirror of
https://github.com/RGBCube/serenity
synced 2025-05-18 18:35:06 +00:00

This is implemented as a Clang frontend tool, and currently does two things: - Ensure for all fields wrapped in {Nonnull,}GCPtr<T>, T inherits from JS::Cell - Ensure for all fields not wrapped in {Nonnull,}GCPtr, that the type does not inherit from JS::Cell (otherwise it should be wrapped in a Ptr class). In the future, this tool could be extended further. For example, we may consider validating all implementations of Cell::visit_impl.
15 lines
479 B
Markdown
15 lines
479 B
Markdown
### LibJSGCVerifier
|
|
|
|
This is a simple Clang tool to validate certain behavior relating to LibJS's GC. It currently validates
|
|
two things:
|
|
|
|
- For all types wrapped by `GCPtr` or `NonnullGCPtr`, that the wrapped type inherits from `Cell`
|
|
- For all types not wrapped by `GCPtr` or `NonnullGCPtr`, that the wrapped type does not inherit from `Cell`
|
|
(otherwise it should be wrapped).
|
|
|
|
Usage:
|
|
```
|
|
cmake -GNinja -B build
|
|
cmake --build build
|
|
src/main.py -b <path to serenity>/Build
|
|
```
|