mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 09:27:35 +00:00
Lagom: Add a tool to verify correctness of the LibJS GC
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.
This commit is contained in:
parent
176beeb08e
commit
b33b950e45
7 changed files with 341 additions and 0 deletions
15
Meta/Lagom/Tools/LibJSGCVerifier/README.md
Normal file
15
Meta/Lagom/Tools/LibJSGCVerifier/README.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
### 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
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue