1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:38:11 +00:00
serenity/Userland/Libraries/LibJS
Andreas Kling fa6c06ce8d LibJS: Elide some declarative environments in ECMAScript function calls
By spec, calling an ECMAScript function object in non-strict mode should
always create a new top-level declarative environment, even if there are
no lexically scoped bindings (let/const) that belong in it. This is
used for scope disambiguation in direct eval() calls.

However, if there are no direct eval() calls within the function, and no
lexically scoped bindings, we can simply not allocate the extra
environment and save ourselves the trouble.
2021-10-08 15:00:34 +02:00
..
Bytecode LibJS: Add an optimization to avoid needless arguments object creation 2021-10-05 10:15:14 +01:00
Heap LibJS: Make BlockAllocator cache reuse blocks in random order 2021-10-08 00:35:29 +02:00
Runtime LibJS: Elide some declarative environments in ECMAScript function calls 2021-10-08 15:00:34 +02:00
Tests LibJS: Fast non-local variable access :^) 2021-10-07 11:53:18 +02:00
AST.cpp LibJS: Propagate "contains direct call to eval()" flag from parser 2021-10-08 12:43:38 +02:00
AST.h LibJS: Propagate "contains direct call to eval()" flag from parser 2021-10-08 12:43:38 +02:00
CMakeLists.txt LibJS: Rename OrdinaryFunctionObject to ECMAScriptFunctionObject 2021-09-25 17:51:30 +02:00
Console.cpp LibJS: Rename CallFrame => ExecutionContext 2021-06-24 19:28:00 +02:00
Console.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Forward.h LibJS: Add ECMAScriptFunctionObject forward declaration 2021-09-25 17:51:30 +02:00
Interpreter.cpp LibJS: Fix that the interpreter did not clear the unwind status 2021-10-03 17:42:05 +02:00
Interpreter.h LibJS: Make scoping follow the spec 2021-09-30 08:16:32 +01:00
Lexer.cpp LibJS: Add a specific test for invalid unicode characters in the lexer 2021-10-03 17:42:05 +02:00
Lexer.h LibJS: Make Lexer::s_keywords store keywords as FlyString 2021-09-18 19:54:24 +02:00
MarkupGenerator.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
MarkupGenerator.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Module.cpp LibJS: Add a barebones Module class 2021-09-14 21:41:51 +02:00
Module.h LibJS: Add a barebones Module class 2021-09-14 21:41:51 +02:00
Parser.cpp LibJS: Propagate "contains direct call to eval()" flag from parser 2021-10-08 12:43:38 +02:00
Parser.h LibJS: Propagate "contains direct call to eval()" flag from parser 2021-10-08 12:43:38 +02:00
Script.cpp LibJS+LibWeb: Move script parse time logging from JS::Script to LibWeb 2021-09-14 21:41:51 +02:00
Script.h LibJS+LibWeb: Let JS::Script::parse() return a list of errors (on error) 2021-09-14 21:41:51 +02:00
SourceRange.h LibJS: Add missing headers 2021-10-06 23:52:40 +01:00
SourceTextModule.cpp LibJS: Add a barebones SourceTextModule class 2021-09-14 21:41:51 +02:00
SourceTextModule.h LibJS: Add a barebones SourceTextModule class 2021-09-14 21:41:51 +02:00
SyntaxHighlighter.cpp LibJS: Remove unused header includes 2021-08-01 08:10:16 +02:00
SyntaxHighlighter.h LibWeb+LibSyntax: Implement nested syntax highlighters 2021-06-07 14:45:49 +04:30
Token.cpp AK: Replace the mutable String::replace API with an immutable version 2021-09-11 20:36:43 +03:00
Token.h Libraries: Use AK::Variant default initialization where appropriate 2021-09-21 04:22:52 +04:30