ladybird/Libraries/LibJS/Runtime
Andreas Kling 5674f8bbe0 LibJS: Limit eval() deoptimization to the containing function scope
Previously, when direct eval() was called, we would mark the entire
environment chain as "permanently screwed by eval", disabling variable
access caching all the way up to the global scope.

This was overly conservative. According to the ECMAScript specification,
a sloppy direct eval() can only inject var declarations into its
containing function's variable environment - it cannot inject variables
into parent function scopes.

This patch makes two changes:

1. Stop propagating the "screwed by eval" flag at function boundaries.
   When set_permanently_screwed_by_eval() hits a FunctionEnvironment or
   GlobalEnvironment, it no longer continues to outer environments.

2. Check each environment during cache lookup traversal. If any
   environment in the path is marked as screwed, we bail to the slow
   path. This catches the case where we're inside a function with eval
   and have a cached coordinate pointing to an outer scope.

The second change is necessary because eval can create local variables
that shadow outer bindings. When looking up a variable from inside a
function that called eval, we can't trust cached coordinates that point
to outer scopes, since eval may have created a closer binding.

This improves performance for code with nested functions where an inner
function uses eval but parent functions perform many variable accesses.
The parent functions can now use cached environment coordinates.

All 29 new tests verify behavior matches V8.
2026-01-27 10:58:39 +01:00
..
Intl LibJS: Remove "era" from Temporal's DateTimeFormat formatting options 2025-11-16 07:59:59 -05:00
JavaScriptImplementations LibJS: Replace Array.fromAsync with a native JavaScript implementation 2025-11-30 11:54:54 +01:00
Temporal LibJS: Flip validity check to an assertion in CalendarMonthDayFromFields 2026-01-16 14:31:31 +01:00
AbstractOperations.cpp LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
AbstractOperations.h LibJS: Shrink DeclarativeEnvironment by shrinking DisposeCapability 2025-12-21 12:08:41 -06:00
Accessor.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Accessor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Agent.cpp LibJS: Switch Agent [[CanBlock]] slot to a enum member 2025-04-25 14:07:51 +02:00
Agent.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
AggregateError.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
AggregateError.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AggregateErrorConstructor.cpp LibJS: Make internal_define_own_property() save added property offset 2025-09-17 12:44:44 +02:00
AggregateErrorConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AggregateErrorPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
AggregateErrorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ArgumentsObject.cpp LibJS: Mark ArgumentsObject as non-interfering if parameter list empty 2025-12-10 17:40:57 -06:00
ArgumentsObject.h LibJS: Mark ArgumentsObject as non-interfering if parameter list empty 2025-12-10 17:40:57 -06:00
Array.cpp LibJS: Don't skip indexed property storage switching in Array fast path 2026-01-07 07:52:03 -05:00
Array.h LibJS: Add inline caching for adding new own properties to objects 2025-09-17 12:44:44 +02:00
ArrayBuffer.cpp LibJS: Don't crash on enormous maxByteLengths for SharedArrayBuffer 2026-01-05 06:38:55 -05:00
ArrayBuffer.h LibJS: Crudely implement growable SharedArrayBuffers 2026-01-04 07:47:55 +01:00
ArrayBufferConstructor.cpp LibJS: Make Completion.[[Value]] non-optional 2025-04-05 11:20:26 +02:00
ArrayBufferConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ArrayBufferPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
ArrayBufferPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ArrayConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
ArrayConstructor.h LibJS: Replace Array.fromAsync with a native JavaScript implementation 2025-11-30 11:54:54 +01:00
ArrayIterator.cpp LibJS: Avoid IteratorRecord GC-allocation in GetIterator instruction 2025-11-02 20:05:47 +01:00
ArrayIterator.h LibJS: Avoid IteratorRecord GC-allocation in GetIterator instruction 2025-11-02 20:05:47 +01:00
ArrayIteratorPrototype.cpp LibJS: Do more comprehensive check if next() fast path is possible 2025-06-02 00:15:36 +02:00
ArrayIteratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ArrayPrototype.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
ArrayPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncDisposableStack.cpp LibJS: Implement the AsyncDisposableStack interface 2025-01-17 20:46:32 +01:00
AsyncDisposableStack.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncDisposableStackConstructor.cpp LibJS: Implement the AsyncDisposableStack interface 2025-01-17 20:46:32 +01:00
AsyncDisposableStackConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncDisposableStackPrototype.cpp LibJS+LibWeb: Port interned bytecode strings to UTF-16 2025-08-14 10:27:08 +02:00
AsyncDisposableStackPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncFromSyncIterator.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
AsyncFromSyncIterator.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncFromSyncIteratorPrototype.cpp LibJS: Avoid IteratorRecord GC-allocation in GetIterator instruction 2025-11-02 20:05:47 +01:00
AsyncFromSyncIteratorPrototype.h LibJS: Avoid IteratorRecord GC-allocation in GetIterator instruction 2025-11-02 20:05:47 +01:00
AsyncFunctionConstructor.cpp LibJS: Implement the Dynamic Code Brand Checks stage 3 proposal 2025-07-09 15:52:54 -06:00
AsyncFunctionConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncFunctionDriverWrapper.cpp LibJS: Cache rejected/fulfilled callbacks in AsyncFunctionDriverWrapper 2025-05-09 12:30:15 +02:00
AsyncFunctionDriverWrapper.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncFunctionPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
AsyncFunctionPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncGenerator.cpp LibJS: Introduce NativeJavaScriptBackedFunction 2025-11-30 11:54:54 +01:00
AsyncGenerator.h LibJS: Introduce NativeJavaScriptBackedFunction 2025-11-30 11:54:54 +01:00
AsyncGeneratorFunctionConstructor.cpp LibJS: Implement the Dynamic Code Brand Checks stage 3 proposal 2025-07-09 15:52:54 -06:00
AsyncGeneratorFunctionConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncGeneratorFunctionPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
AsyncGeneratorFunctionPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncGeneratorPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
AsyncGeneratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AsyncGeneratorRequest.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
AsyncIteratorPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
AsyncIteratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
AtomicsObject.cpp LibJS: Compute byteIndexInBuffer sooner in Atomic's DoWait 2025-12-03 12:08:40 +01:00
AtomicsObject.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
BigInt.cpp LibJS: Add a method to stringify a BigInt to UTF-16 2025-08-14 10:27:08 +02:00
BigInt.h LibJS: Add a method to stringify a BigInt to UTF-16 2025-08-14 10:27:08 +02:00
BigIntConstructor.cpp LibCrypto: Replace {Unsigned,Signed}BigInteger impl with LibTomMath 2025-05-23 11:57:21 +02:00
BigIntConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
BigIntObject.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
BigIntObject.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
BigIntPrototype.cpp LibCrypto+LibJS: Remove {Signed,Unsigned}BigInteger to_base_deprecated 2025-04-28 12:05:26 +02:00
BigIntPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
BooleanConstructor.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
BooleanConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
BooleanObject.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
BooleanObject.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
BooleanPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
BooleanPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
BoundFunction.cpp LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
BoundFunction.h LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
ByteLength.h
CanonicalIndex.h
ClassFieldDefinition.cpp LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
ClassFieldDefinition.h LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
CommonPropertyNames.h LibJS: Crudely implement growable SharedArrayBuffers 2026-01-04 07:47:55 +01:00
Completion.cpp WebContent: Enable in Windows CI 2025-08-23 16:04:36 -06:00
Completion.h LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
CompletionCell.cpp LibJS: Make Completion.[[Value]] non-optional 2025-04-05 11:20:26 +02:00
CompletionCell.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ConsoleObject.cpp LibJS: Implement console.dirxml 2025-08-17 07:28:56 -04:00
ConsoleObject.h LibJS: Export symbols causing linker errors in various consumers 2025-08-23 16:04:36 -06:00
ConsoleObjectPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
ConsoleObjectPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
DataView.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
DataView.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
DataViewConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
DataViewConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
DataViewPrototype.cpp LibJS: Update spec steps / links for the Float16Array proposal 2025-04-29 07:33:08 -04:00
DataViewPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Date.cpp LibJS/Temporal: Implement finding time zone transitions 2026-01-16 07:00:02 -05:00
Date.h LibJS/Temporal: Implement finding time zone transitions 2026-01-16 07:00:02 -05:00
DateConstructor.cpp Everywhere: Replace DateTime::to_string() with UnixDateTime::to_string() 2025-06-19 18:42:45 -06:00
DateConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
DateParser.h LibJS: DateParser for simplified ISO8601 and non-standard date strings 2025-05-26 18:48:09 +02:00
DatePrototype.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
DatePrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
DeclarativeEnvironment.cpp LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
DeclarativeEnvironment.h LibJS: Export symbols causing linker errors in various consumers 2025-08-23 16:04:36 -06:00
DisposableStack.cpp LibJS: Bring the explicit resource management implementation up to date 2025-01-17 20:46:32 +01:00
DisposableStack.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
DisposableStackConstructor.cpp LibJS: Bring the explicit resource management implementation up to date 2025-01-17 20:46:32 +01:00
DisposableStackConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
DisposableStackPrototype.cpp LibJS: Make Completion.[[Value]] non-optional 2025-04-05 11:20:26 +02:00
DisposableStackPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ECMAScriptFunctionObject.cpp LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
ECMAScriptFunctionObject.h LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
Environment.cpp LibJS: Limit eval() deoptimization to the containing function scope 2026-01-27 10:58:39 +01:00
Environment.h LibJS: Limit eval() deoptimization to the containing function scope 2026-01-27 10:58:39 +01:00
EnvironmentCoordinate.h
Error.cpp LibJS: Make Error stack strings UTF-16 from the get-go 2026-01-18 19:00:32 +01:00
Error.h LibJS: Make Error stack strings UTF-16 from the get-go 2026-01-18 19:00:32 +01:00
ErrorConstructor.cpp LibJS: Update spec links and steps for the Error.isError proposal 2025-10-03 09:03:40 +02:00
ErrorConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ErrorPrototype.cpp LibJS: Make Error stack strings UTF-16 from the get-go 2026-01-18 19:00:32 +01:00
ErrorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ErrorTypes.cpp Revert "LibJS: Revert common error types to only hold a single string" 2025-08-18 13:42:22 +02:00
ErrorTypes.h LibJS: Crudely implement growable SharedArrayBuffers 2026-01-04 07:47:55 +01:00
ExecutionContext.cpp LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
ExecutionContext.h LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
FinalizationRegistry.cpp AK+LibJS: Make SinglyLinkedList::remove() return a new iterator 2025-12-25 20:21:37 +01:00
FinalizationRegistry.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
FinalizationRegistryConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
FinalizationRegistryConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
FinalizationRegistryPrototype.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
FinalizationRegistryPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
FunctionConstructor.cpp LibJS: Propagate function length etc to new Function objects 2025-12-25 23:59:21 +01:00
FunctionConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
FunctionEnvironment.cpp LibJS: Introduce NativeJavaScriptBackedFunction 2025-11-30 11:54:54 +01:00
FunctionEnvironment.h LibJS: Shrink FunctionEnvironment by reordering members a bit 2025-12-21 12:08:41 -06:00
FunctionKind.h
FunctionObject.cpp LibJS: Make internal_define_own_property() save added property offset 2025-09-17 12:44:44 +02:00
FunctionObject.h LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
FunctionPrototype.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
FunctionPrototype.h LibJS: Remove ExecutionContext::function_name field 2025-10-29 21:20:10 +01:00
GeneratorFunctionConstructor.cpp LibJS: Implement the Dynamic Code Brand Checks stage 3 proposal 2025-07-09 15:52:54 -06:00
GeneratorFunctionConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
GeneratorFunctionPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
GeneratorFunctionPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
GeneratorObject.cpp LibJS: Introduce NativeJavaScriptBackedFunction 2025-11-30 11:54:54 +01:00
GeneratorObject.h LibJS: Introduce NativeJavaScriptBackedFunction 2025-11-30 11:54:54 +01:00
GeneratorPrototype.cpp LibJS: Skip iteration result allocation in AsyncFunctionDriverWrapper 2025-05-09 12:30:15 +02:00
GeneratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
GeneratorResult.cpp LibJS: Make async functions & generators faster with helper types 2025-04-01 02:30:42 +02:00
GeneratorResult.h LibJS+LibWeb: Add various fast_is<T>() helpers for common things 2025-12-20 09:13:19 -06:00
GlobalEnvironment.cpp LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
GlobalEnvironment.h LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
GlobalObject.cpp AK+LibJS+LibWeb+LibRegex: Replace AK::Utf16Data with AK::Utf16String 2025-07-18 12:45:38 -04:00
GlobalObject.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
IndexedProperties.cpp LibJS: Fast-path own-property enumeration and reduce descriptor lookups 2025-09-21 15:06:32 +02:00
IndexedProperties.h LibJS: Visit entire SimpleIndexedProperties packed vector in bulk 2026-01-08 00:26:57 +01:00
Intrinsics.cpp LibJS: Lazily instantiate "prototype" field on ECMAScriptFunctionObject 2025-12-17 12:50:17 -06:00
Intrinsics.h LibJS: Lazily instantiate "prototype" field on ECMAScriptFunctionObject 2025-12-17 12:50:17 -06:00
Iterator.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
Iterator.h LibJS: Replace [[UnderlyingIterator]] with [[UnderlyingIterators]] 2025-12-03 12:08:40 +01:00
IteratorConstructor.cpp LibJS: Implement Iterator.concat 2025-12-03 12:08:40 +01:00
IteratorConstructor.h LibJS: Implement Iterator.concat 2025-12-03 12:08:40 +01:00
IteratorHelper.cpp LibJS: Directly indicate when the IteratorHelper generator is complete 2025-12-03 12:08:40 +01:00
IteratorHelper.h LibJS: Directly indicate when the IteratorHelper generator is complete 2025-12-03 12:08:40 +01:00
IteratorHelperPrototype.cpp LibJS: Replace [[UnderlyingIterator]] with [[UnderlyingIterators]] 2025-12-03 12:08:40 +01:00
IteratorHelperPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
IteratorPrototype.cpp LibJS: Directly indicate when the IteratorHelper generator is complete 2025-12-03 12:08:40 +01:00
IteratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
JobCallback.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
JobCallback.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
JSONObject.cpp Meta+LibJS: Upgrade simdjson to the latest version 2026-01-16 13:11:05 +01:00
JSONObject.h LibJS: Optimize JSON.stringify with single StringBuilder 2026-01-12 13:53:28 -05:00
KeyedCollections.cpp
KeyedCollections.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Map.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Map.h LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
MapConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
MapConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
MapIterator.cpp LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
MapIterator.h LibJS: Avoid IteratorRecord GC-allocation in GetIterator instruction 2025-11-02 20:05:47 +01:00
MapIteratorPrototype.cpp LibJS: Do more comprehensive check if next() fast path is possible 2025-06-02 00:15:36 +02:00
MapIteratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
MapPrototype.cpp LibJS: Implement Map.prototype.getOrInsert[Computed] 2025-10-03 08:58:40 +02:00
MapPrototype.h LibJS: Implement Map.prototype.getOrInsert[Computed] 2025-10-03 08:58:40 +02:00
MathObject.cpp LibCrypto+AK: Merge LibCrypto/SecureRandom into AK/Random 2026-01-23 15:53:27 +01:00
MathObject.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ModuleEnvironment.cpp LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
ModuleEnvironment.h LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
ModuleNamespaceObject.cpp LibJS: Add inline caching for adding new own properties to objects 2025-09-17 12:44:44 +02:00
ModuleNamespaceObject.h LibJS: Fast-path own-property enumeration and reduce descriptor lookups 2025-09-21 15:06:32 +02:00
ModuleRequest.h LibJS: Sync additional Import Attributes spec changes 2025-10-22 10:58:19 +02:00
NativeFunction.cpp LibJS: Simplify how we know which builtin a FunctionObject represents 2025-12-25 23:59:21 +01:00
NativeFunction.h LibJS: Simplify how we know which builtin a FunctionObject represents 2025-12-25 23:59:21 +01:00
NativeJavaScriptBackedFunction.cpp LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
NativeJavaScriptBackedFunction.h LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
NumberConstructor.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
NumberConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
NumberObject.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
NumberObject.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
NumberPrototype.cpp LibJS: Replace some use of ByteString with String 2025-05-03 08:08:04 +02:00
NumberPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Object.cpp LibJS: Remove unnecessary return in Object::define_native_accessor 2026-01-08 12:57:17 +01:00
Object.h LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
ObjectConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
ObjectConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ObjectEnvironment.cpp LibJS: Make internal_define_own_property() save added property offset 2025-09-17 12:44:44 +02:00
ObjectEnvironment.h LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
ObjectPrototype.cpp LibJS: Use property lookup caches for some of our hot C++ gets 2025-10-14 15:47:38 +02:00
ObjectPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
PrimitiveString.cpp LibJS: Limit the length of strings we put in the VM string cache 2025-11-29 09:39:43 -05:00
PrimitiveString.h LibJS: Add number-to-string cache for numbers < 1000 2025-10-05 21:44:06 +02:00
PrivateEnvironment.cpp LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
PrivateEnvironment.h LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
Promise.cpp LibJS: Make Value() default-construct the undefined value 2025-04-05 11:20:26 +02:00
Promise.h LibJS: Rearrange members to shrink Promise by 8 bytes 2025-12-21 12:08:41 -06:00
PromiseCapability.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
PromiseCapability.h LibJS: Export symbols causing linker errors in various consumers 2025-08-23 16:04:36 -06:00
PromiseConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
PromiseConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
PromiseJobs.cpp LibJS: Make Completion.[[Value]] non-optional 2025-04-05 11:20:26 +02:00
PromiseJobs.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
PromisePrototype.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
PromisePrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
PromiseReaction.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
PromiseReaction.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
PromiseResolvingElementFunctions.cpp LibJS: Make internal_define_own_property() save added property offset 2025-09-17 12:44:44 +02:00
PromiseResolvingElementFunctions.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
PromiseResolvingFunction.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
PromiseResolvingFunction.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
PropertyAttributes.h LibJS: Make PropertyAttributes and default_attributes constexpr 2026-01-18 10:10:04 +01:00
PropertyDescriptor.cpp LibGC+LibJS+LibWeb: Add Visitor::visit(Optional<T>) 2026-01-06 10:55:56 +01:00
PropertyDescriptor.h LibJS+LibWeb: Add missing visits for cached cross-origin properties 2026-01-06 00:01:01 +01:00
PropertyKey.h LibJS: Specialize Optional<PropertyKey> 2025-12-21 12:08:41 -06:00
PrototypeObject.h LibJS+LibWeb: Inline fast path for Value::to_object() 2025-09-15 12:16:58 +02:00
ProxyConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
ProxyConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ProxyObject.cpp LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
ProxyObject.h LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
RawJSONObject.cpp LibJS: Implement rawJSON and isRawJSON functions 2025-04-24 09:33:49 -04:00
RawJSONObject.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Realm.cpp LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
Realm.h LibJS: Simplify how we know which builtin a FunctionObject represents 2025-12-25 23:59:21 +01:00
Reference.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
Reference.h LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
ReflectObject.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
ReflectObject.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
RegExpConstructor.cpp LibJS: Update spec steps / links for the RegExp.escape proposal 2025-04-29 07:33:08 -04:00
RegExpConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
RegExpLegacyStaticProperties.cpp LibJS: Use stored input for RegExp legacy static property views 2025-12-03 13:45:26 +01:00
RegExpLegacyStaticProperties.h AK+LibJS+LibWeb: Recognize that our UTF-16 string is actually WTF-16 2025-08-13 09:56:13 -04:00
RegExpObject.cpp LibJS: Escape line terminators in regex source 2025-10-24 13:24:55 -04:00
RegExpObject.h LibJS: Export symbols causing linker errors in various consumers 2025-08-23 16:04:36 -06:00
RegExpPrototype.cpp LibRegex+LibJS: Flatten the bytecode buffer before regex execution 2026-01-05 18:22:11 +01:00
RegExpPrototype.h LibJS: Skip generic call when using regexp builtins in StringPrototype 2025-12-13 13:51:12 -06:00
RegExpStringIterator.cpp LibJS: Use PrimitiveString more instead of Utf16String in RegExp code 2025-05-03 20:01:20 +02:00
RegExpStringIterator.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
RegExpStringIteratorPrototype.cpp LibJS+LibWeb: Replace JS::Utf16String with AK::Utf16String 2025-07-18 12:45:38 -04:00
RegExpStringIteratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Set.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
Set.h LibJS: Add Object::fast_is<Set>() and Object::fast_is<Map>() 2025-09-26 16:21:18 +02:00
SetConstructor.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SetConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
SetIterator.cpp LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
SetIterator.h LibJS: Avoid IteratorRecord GC-allocation in GetIterator instruction 2025-11-02 20:05:47 +01:00
SetIteratorPrototype.cpp LibJS: Do more comprehensive check if next() fast path is possible 2025-06-02 00:15:36 +02:00
SetIteratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
SetPrototype.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
SetPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ShadowRealm.cpp LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
ShadowRealm.h LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
ShadowRealmConstructor.cpp LibJS: Align spec comments for ShadowRealm for HostInitializeShadowRealm 2024-11-17 22:15:22 +01:00
ShadowRealmConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ShadowRealmPrototype.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
ShadowRealmPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Shape.cpp LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
Shape.h LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
SharedArrayBufferConstructor.cpp LibJS: Crudely implement growable SharedArrayBuffers 2026-01-04 07:47:55 +01:00
SharedArrayBufferConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
SharedArrayBufferPrototype.cpp LibJS: Crudely implement growable SharedArrayBuffers 2026-01-04 07:47:55 +01:00
SharedArrayBufferPrototype.h LibJS: Crudely implement growable SharedArrayBuffers 2026-01-04 07:47:55 +01:00
SharedFunctionInstanceData.cpp LibJS: Eliminate HashMap operations in SFID by caching parser data 2026-01-25 23:08:36 +01:00
SharedFunctionInstanceData.h LibJS: Don't make extra copies of every JS function's source code 2025-12-21 10:06:04 -06:00
StringConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
StringConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
StringIterator.cpp LibJS: Avoid IteratorRecord GC-allocation in GetIterator instruction 2025-11-02 20:05:47 +01:00
StringIterator.h LibJS: Avoid IteratorRecord GC-allocation in GetIterator instruction 2025-11-02 20:05:47 +01:00
StringIteratorPrototype.cpp LibJS: Do more comprehensive check if next() fast path is possible 2025-06-02 00:15:36 +02:00
StringIteratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
StringObject.cpp LibJS: Add number-to-string cache for numbers < 1000 2025-10-05 21:44:06 +02:00
StringObject.h LibJS: Fast-path own-property enumeration and reduce descriptor lookups 2025-09-21 15:06:32 +02:00
StringPrototype.cpp LibJS: Simplify how we know which builtin a FunctionObject represents 2025-12-25 23:59:21 +01:00
StringPrototype.h LibJS: Explicitly prevent out-of-bounds access in String.lastIndexOf 2025-10-03 09:03:40 +02:00
SuppressedError.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SuppressedError.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
SuppressedErrorConstructor.cpp LibJS: Make internal_define_own_property() save added property offset 2025-09-17 12:44:44 +02:00
SuppressedErrorConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
SuppressedErrorPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SuppressedErrorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Symbol.cpp LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
Symbol.h LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
SymbolConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
SymbolConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
SymbolObject.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SymbolObject.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
SymbolPrototype.cpp LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
SymbolPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
TypedArray.cpp LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
TypedArray.h LibJS: Add fast_is<T>() for all typed array classes 2025-12-20 09:13:19 -06:00
TypedArrayConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
TypedArrayConstructor.h LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
TypedArrayPrototype.cpp LibJS: Fast path for TypedArray.slice() 2025-12-01 15:12:52 +01:00
TypedArrayPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Uint8Array.cpp LibJS: Use non-copying GetUint8ArrayBytes() in Uint8Array.toBase64() 2025-11-29 09:39:43 -05:00
Uint8Array.h LibJS: Use non-copying GetUint8ArrayBytes() in Uint8Array.toBase64() 2025-11-29 09:39:43 -05:00
Utf16String.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Value.cpp LibJS: Optimize JSON.stringify with single StringBuilder 2026-01-12 13:53:28 -05:00
Value.h LibJS: Optimize JSON.stringify with single StringBuilder 2026-01-12 13:53:28 -05:00
ValueInlines.h LibJS: Sprinkle [[likely]] on the fast paths in ValueInlines.h 2025-10-11 20:08:58 +02:00
ValueTraits.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
VM.cpp LibGC: Make MarkingVisitor better at bulk-visiting Vector<JS::Value> 2026-01-07 20:51:17 +01:00
VM.h LibJS: Crudely implement growable SharedArrayBuffers 2026-01-04 07:47:55 +01:00
WeakMap.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
WeakMap.h LibJS+LibWeb: Add various fast_is<T>() helpers for common things 2025-12-20 09:13:19 -06:00
WeakMapConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
WeakMapConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
WeakMapPrototype.cpp LibJS: Implement WeakMap.prototype.getOrInsert[Computed] 2025-10-03 08:58:40 +02:00
WeakMapPrototype.h LibJS: Implement WeakMap.prototype.getOrInsert[Computed] 2025-10-03 08:58:40 +02:00
WeakRef.cpp LibJS: Remove bogus VERIFY_NOT_REACHED() in WeakRef::remove_dead_cells() 2026-01-07 07:52:03 -05:00
WeakRef.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
WeakRefConstructor.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
WeakRefConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
WeakRefPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
WeakRefPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
WeakSet.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
WeakSet.h LibJS: Export symbols causing linker errors in various consumers 2025-08-23 16:04:36 -06:00
WeakSetConstructor.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
WeakSetConstructor.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
WeakSetPrototype.cpp LibJS: Pass JS::Value directly to string formatting functions 2025-12-09 21:44:13 -06:00
WeakSetPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
WrapForValidIteratorPrototype.cpp LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
WrapForValidIteratorPrototype.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
WrappedFunction.cpp LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00
WrappedFunction.h LibJS: Skip initializing constant slots in ExecutionContext 2026-01-19 10:48:12 +01:00