1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-22 18:35:18 +00:00
serenity/Meta/Lagom/Tools/LibJSGCVerifier
Daniel Bertalan e64a8751d1 LibJS: Do not use the $ special character in file names
The dollar sign is a special character in POSIX shells and in the Ninja
build file format. If the file name contains a `$`, something goes wrong
in the escaping/unescaping of this symbol, and CMake/GCC/Clang generate
invalid dependency files where not all instances of `$` are escaped
properly. Because of this, Ninja fails to rebuild `$262Object.cpp` if
the headers included by it have changed.

Stale `$262Object.cpp.o` files have been the cause of mysterious crashes
multiple times which only go away after doing a clean build. Let's
prevent these from happening again by removing the `$` from the
filename.
2023-07-15 11:09:22 -04:00
..
src LibJS: Do not use the $ special character in file names 2023-07-15 11:09:22 -04:00
.gitignore Lagom: Add a tool to verify correctness of the LibJS GC 2023-03-06 13:05:43 +00:00
CMakeLists.txt Lagom: Add a tool to verify correctness of the LibJS GC 2023-03-06 13:05:43 +00:00
README.md Lagom: Add a tool to verify correctness of the LibJS GC 2023-03-06 13:05:43 +00:00

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