1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-19 02:05:07 +00:00
serenity/Userland/Libraries/LibJS
Andreas Kling 131c3f50de LibJS: Add JS::SafeFunction, like Function but protects captures from GC
SafeFunction automatically registers its closure memory area in a place
where the JS garbage collector can find it.

This means that you can capture JS::Value and arbitrary pointers into
the GC heap in closures, as long as you're using a SafeFunction, and the
GC will not zap those values!

There's probably some performance impact from this, and there's a lot of
things that could be nicer/smarter about it, but let's build something
that ensures safety first, and we can worry about performance later. :^)
2022-09-24 12:23:29 +02:00
..
Bytecode LibJS: Implement SuperCall for the Bytecode-VM 2022-08-31 15:22:36 +01:00
Contrib/Test262 LibJS: Implement $262.evalScript() according to the given algorithm 2022-08-30 12:00:04 +01:00
Heap LibJS: Add JS::SafeFunction, like Function but protects captures from GC 2022-09-24 12:23:29 +02:00
Runtime LibJS: Change default time display options to "always" for digital style 2022-09-22 14:39:24 +01:00
Tests LibJS: Change default time display options to "always" for digital style 2022-09-22 14:39:24 +01:00
AST.cpp LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
AST.h LibJS: Handle empty named export 2022-09-02 02:07:37 +01:00
CMakeLists.txt LibC: Remove the LibM interface target 2022-09-16 16:09:19 +00:00
Console.cpp LibJS: Create Console using a Realm instead of a VM 2022-09-21 20:03:49 +01:00
Console.h LibJS: Create Console using a Realm instead of a VM 2022-09-21 20:03:49 +01:00
CyclicModule.cpp LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
CyclicModule.h LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
Forward.h LibJS: Move ConsoleObject construction from GlobalObject to Intrinsics 2022-08-28 16:36:56 +01:00
Interpreter.cpp LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
Interpreter.h LibJS: Remove {Bytecode::,}Interpreter::global_object() 2022-08-23 13:58:30 +01:00
Lexer.cpp Everywhere: Use default StringView constructor over nullptr 2022-07-12 23:11:35 +02:00
Lexer.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
MarkupGenerator.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
MarkupGenerator.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Module.cpp LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
Module.h LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
Parser.cpp LibJS: Allow anonymous functions as default exports 2022-09-02 02:07:37 +01:00
Parser.h LibJS: Allow anonymous functions as default exports 2022-09-02 02:07:37 +01:00
SafeFunction.h LibJS: Add JS::SafeFunction, like Function but protects captures from GC 2022-09-24 12:23:29 +02:00
Script.cpp LibJS: Make sure JS::Script visits its HostDefined object 2022-09-06 01:21:09 +02:00
Script.h LibJS+LibWeb: Make HTML::Script GC-allocated 2022-09-06 00:27:09 +02:00
SourceRange.h LibJS: Add missing headers 2021-10-06 23:52:40 +01:00
SourceTextModule.cpp LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
SourceTextModule.h LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
SyntaxHighlighter.cpp LibJS: Remove a bunch of gratuitous JS namespace qualifiers 2022-04-03 15:19:33 +01:00
SyntaxHighlighter.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
SyntheticModule.cpp LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
SyntheticModule.h LibJS: Make Script and Module GC-allocated 2022-09-06 00:27:09 +02:00
Token.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Token.h Everywhere: Explicitly specify the size in StringView constructors 2022-07-12 23:11:35 +02:00