1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 04:38:11 +00:00
serenity/Userland/Libraries/LibJS/Heap
Andreas Kling 07a36c8f80 LibJS: Add a finalization pass to the garbage collector
Doing things in the destructor of a GC-allocated object isn't always
safe, in case it involves accessing other GC-allocated objects.
If they were already swept by GC, we'd be poking into freed memory.

This patch adds a separate finalization pass where GC calls finalize()
on every unmarked cell that's about to be deleted.

It's safe to access other GC objects in finalize(), even if they're
also unmarked.
2022-10-20 19:36:59 +02:00
..
BlockAllocator.cpp Everywhere: Replace uses of __serenity__ with AK_OS_SERENITY 2022-10-10 12:23:12 +02:00
BlockAllocator.h Libraries: Use default constructors/destructors in LibJS 2022-03-16 16:19:40 +00:00
Cell.h LibJS: Add a finalization pass to the garbage collector 2022-10-20 19:36:59 +02:00
CellAllocator.cpp LibJS: Use default instead of an empty constructor/destructor 2021-09-16 17:17:13 +02:00
CellAllocator.h Userland: Remove a bunch of unnecessary Vector imports 2022-01-28 23:40:25 +01:00
DeferGC.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
GCPtr.h LibJS: Remove unnecessary operator==() for ({Nonnull,}GCPtr<T>, T*) 2022-10-20 15:16:23 +02:00
Handle.cpp LibJS: Make Handle<T> more user-friendly 2022-09-03 00:36:26 +02:00
Handle.h LibJS: Include Environment.h directly in ClassFieldDefinition.h 2022-10-01 15:36:20 +01:00
Heap.cpp LibJS: Add a finalization pass to the garbage collector 2022-10-20 19:36:59 +02:00
Heap.h LibJS: Add a finalization pass to the garbage collector 2022-10-20 19:36:59 +02:00
HeapBlock.cpp Everywhere: Replace uses of __serenity__ with AK_OS_SERENITY 2022-10-10 12:23:12 +02:00
HeapBlock.h LibJS: Add JS_CELL macro and use it in all JS::Cell subclasses 2022-08-29 03:24:54 +02:00
MarkedVector.cpp LibJS: Let MarkedVector<T> inherit from Vector and handle Cell* + Value 2022-02-09 12:25:27 +00:00
MarkedVector.h LibJS: Let MarkedVector<T> inherit from Vector and handle Cell* + Value 2022-02-09 12:25:27 +00:00