1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:28:12 +00:00
serenity/Userland/Libraries/LibJS
Andreas Kling 421845b0cd LibJS: Taint variable environment chain after non-strict direct eval()
Since non-strict direct eval() can insert new bindings into a
surrounding var scope, we cannot safely cache some assumptions about
environment chain layout after eval() has taken place.

Since eval() is rare, let's do what other engines do and simply
deoptimize in its presence. This patch adds a new "permanently screwed"
flag to JS::Environment that will be set on the entire variable
environment chain upon non-strict direct eval().
2021-10-07 11:53:18 +02:00
..
Bytecode LibJS: Add an optimization to avoid needless arguments object creation 2021-10-05 10:15:14 +01:00
Heap LibJS: Make WeakContainer pruning do less work 2021-10-05 18:52:00 +02:00
Runtime LibJS: Taint variable environment chain after non-strict direct eval() 2021-10-07 11:53:18 +02:00
Tests LibJS: Fix switch skipping case evaluation when hitting the default case 2021-09-30 08:16:32 +01:00
AST.cpp LibJS: Skip declarative env in block statement without lexical decls 2021-10-05 14:52:53 +02:00
AST.h LibJS: Skip declarative env in block statement without lexical decls 2021-10-05 14:52:53 +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: Add an optimization to avoid needless arguments object creation 2021-10-05 10:15:14 +01:00
Parser.h LibJS: Add an optimization to avoid needless arguments object creation 2021-10-05 10:15:14 +01: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