ladybird/Libraries/LibJS
Andreas Kling 51a91771b8 LibJS+LibGC: Run FinalizationRegistry cleanup host hook *after* GC
Before this change, it was possible for a second GC to get triggered
in the middle of a first GC, due to allocations happening in the
FinalizationRegistry cleanup host hook. To avoid this causing problems,
we add a "post-GC task" mechanism and use that to invoke the host hook
once all other GC activity is finished, and we've unset the "collecting
garbage" flag.

Note that the test included here only fails reliably when running with
the -g flag (collect garbage after each allocation).

Fixes #3051
2025-01-23 12:10:21 +01:00
..
Bytecode AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
Contrib/Test262 LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Heap LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Runtime LibJS+LibGC: Run FinalizationRegistry cleanup host hook *after* GC 2025-01-23 12:10:21 +01:00
Tests LibJS: Parse dates like "2021-04-21T15:00:00+0000" 2025-01-21 21:36:05 +01:00
AST.cpp AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
AST.h Everywhere: Run clang-format 2024-12-28 05:39:32 -08:00
CMakeLists.txt LibJS: Implement the AsyncDisposableStack interface 2025-01-17 20:46:32 +01:00
Console.cpp LibGC: Rename MarkedVector => RootVector 2024-12-26 19:10:44 +01:00
Console.h LibGC: Rename MarkedVector => RootVector 2024-12-26 19:10:44 +01:00
CyclicModule.cpp AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
CyclicModule.h LibJS: Implement InnerModuleLoading as a free function 2025-01-21 14:58:32 +01:00
Forward.h LibJS: Implement the AsyncDisposableStack interface 2025-01-17 20:46:32 +01:00
Lexer.cpp LibJS: Extract some JS lexer helpers to free functions 2024-12-05 13:56:21 +01:00
Lexer.h LibJS: Extract some JS lexer helpers to free functions 2024-12-05 13:56:21 +01:00
MarkupGenerator.cpp
MarkupGenerator.h
Module.cpp LibJS: Add missing spec prose to FinishLoadingImportedModule 2025-01-21 14:58:32 +01:00
Module.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
ModuleLoading.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Parser.cpp LibJS: Remove support for the "assert" keyword for import attributes 2025-01-21 14:58:32 +01:00
Parser.h LibJS: Remove support for the "assert" keyword for import attributes 2025-01-21 14:58:32 +01:00
ParserError.cpp
ParserError.h
Position.h LibJS: Cache source code positions more often 2024-12-02 11:42:11 +01:00
Print.cpp LibJS: Implement the Temporal.ZonedDateTime constructor 2024-11-26 11:00:56 +01:00
Print.h
Script.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Script.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SourceCode.cpp LibJS: Cache source code positions more often 2024-12-02 11:42:11 +01:00
SourceCode.h
SourceRange.h
SourceTextModule.cpp AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
SourceTextModule.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SyntaxHighlighter.cpp
SyntaxHighlighter.h
SyntheticModule.cpp LibJS: Remove unneeded FIXMEs for suspending an execution context 2025-01-02 11:30:04 +01:00
SyntheticModule.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Token.cpp
Token.h