ladybird/Libraries/LibJS
Andreas Kling 75e7bc1e2a LibJS: Move source range cache from ExecutionContext to Executable
CachedSourceRange was a GC-allocated cell stored on the
ExecutionContext, only needed because ExecutionContext must be
trivially destructible.

Move the source range cache to a HashMap<u32, SourceRange> on the
Executable (keyed by program counter), where it belongs. This
eliminates the GC::Cell subclass entirely and removes the
cached_source_range field from ExecutionContext.

StackTraceElement and TracebackFrame now store Optional<SourceRange>
directly instead of GC::Ptr<CachedSourceRange>.

Shrinks ExecutionContext from 144 to 136 bytes.
2026-03-11 13:33:47 +01:00
..
AsmIntGen AsmIntGen: Panic on missing constants 2026-03-08 23:04:55 +01:00
Bytecode LibJS: Move source range cache from ExecutionContext to Executable 2026-03-11 13:33:47 +01:00
BytecodeDef LibJS: Store cache pointers directly in bytecode instructions 2026-03-08 10:27:13 +01:00
Contrib/Test262 LibJS: Make more use of Value::is and Value::as_if 2026-02-28 10:24:37 -05:00
Heap LibJS: Mark JS::Cell::initialize() as MUST_UPCALL 2026-02-06 13:50:54 +01:00
Runtime LibJS: Move source range cache from ExecutionContext to Executable 2026-03-11 13:33:47 +01:00
Rust LibJS: Copy LHS of binary expression to preserve evaluation order 2026-03-08 15:01:07 +01:00
AST.cpp LibJS: Make MemberExpression::to_string_approximation() recursive 2026-02-15 23:21:46 +01:00
AST.h LibJS: Copy LHS of binary expression to preserve evaluation order 2026-03-08 15:01:07 +01:00
ASTDump.cpp LibJS: Add dump_to_string() for AST nodes and bytecode executables 2026-02-24 09:39:42 +01:00
BytecodeFactory.h LibJS: Add rust_compile_parsed_module() for pre-parsed modules 2026-03-06 13:06:05 +01:00
CMakeLists.txt LibJS+LibUnicode: Use icu4x for Temporal calendar operations 2026-03-11 07:09:57 -04:00
Console.cpp LibJS: Move source range cache from ExecutionContext to Executable 2026-03-11 13:33:47 +01:00
Console.h LibJS: Add source locations to console.trace() 2026-02-06 11:58:07 +00:00
CyclicModule.cpp LibJS: Align async module rejection order with fulfillment order 2025-12-17 15:33:26 +01:00
CyclicModule.h LibJS: Sync additional Import Attributes spec changes 2025-10-22 10:58:19 +02:00
Forward.h LibJS: Move source range cache from ExecutionContext to Executable 2026-03-11 13:33:47 +01:00
FunctionParsingInsights.h LibJS: Remove #include <AST.h> from SharedFunctionInstanceData.h 2026-02-11 23:57:41 +01:00
Lexer.cpp LibJS: Always consume exponent in decimal numeric literals 2026-02-24 09:39:42 +01:00
Lexer.h LibJS: Cache an Utf16View for the full code string in SourceCode 2025-11-09 12:14:03 +01:00
LocalVariable.h LibJS: Port the Identifier AST (and related) nodes to UTF-16 2025-08-13 09:56:13 -04:00
Module.cpp LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
Module.h LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
ModuleLoading.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Parser.cpp LibJS: Defer regex literal compilation to post-parse step 2026-03-06 13:06:05 +01:00
Parser.h LibJS: Defer regex literal compilation to post-parse step 2026-03-06 13:06:05 +01:00
ParserError.cpp LibJS: Port the JS lexer and parser to UTF-16 2025-08-13 09:56:13 -04:00
ParserError.h LibJS: Port the JS lexer and parser to UTF-16 2025-08-13 09:56:13 -04:00
PipelineComparison.cpp LibJS: Add alternative source-to-bytecode pipeline in Rust 2026-02-24 09:39:42 +01:00
PipelineComparison.h LibJS: Add alternative source-to-bytecode pipeline in Rust 2026-02-24 09:39:42 +01:00
Position.h LibJS: Store full realized SourceRange with each AST node 2025-12-29 13:36:01 +01:00
Print.cpp LibJS: Work around inconsistency in CLDR Temporal data sources 2026-02-14 19:47:29 +01:00
Print.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
RustIntegration.cpp LibJS: Store cache pointers directly in bytecode instructions 2026-03-08 10:27:13 +01:00
RustIntegration.h LibJS+LibWeb: Add C++ compile_parsed_module wrapper 2026-03-06 13:06:05 +01:00
ScopeCollector.cpp LibJS: Suppress global identifier optimization for dynamic functions 2026-02-24 09:39:42 +01:00
ScopeCollector.h LibJS: Suppress global identifier optimization for dynamic functions 2026-02-24 09:39:42 +01:00
ScopeRecord.h LibJS: Don't optimize body vars to locals when referenced in defaults 2026-02-19 02:45:37 +01:00
Script.cpp LibJS+LibWeb: Parse classic scripts off the main thread 2026-03-06 13:06:05 +01:00
Script.h LibJS+LibWeb: Parse classic scripts off the main thread 2026-03-06 13:06:05 +01:00
SourceCode.cpp LibJS: Cache ASCII-to-UTF-16 source conversion for Rust compilation 2026-02-25 00:00:52 +01:00
SourceCode.h LibJS: Cache ASCII-to-UTF-16 source conversion for Rust compilation 2026-02-25 00:00:52 +01:00
SourceRange.h AK: Remove unused include from ByteString 2026-02-17 12:38:51 +00:00
SourceTextModule.cpp LibJS+LibWeb: Add C++ compile_parsed_module wrapper 2026-03-06 13:06:05 +01:00
SourceTextModule.h LibJS+LibWeb: Add C++ compile_parsed_module wrapper 2026-03-06 13:06:05 +01:00
SyntaxHighlighter.cpp LibJS: Have JS::Lexer take a JS::SourceCode as input 2025-11-09 12:14:03 +01:00
SyntaxHighlighter.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
SyntheticModule.cpp LibJS+LibWeb: Use InterpreterStack for all execution context allocation 2026-03-04 18:53:12 +01:00
SyntheticModule.h LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
Token.cpp LibJS: Parse overflowing integer literals correctly 2026-02-19 02:45:37 +01:00
Token.h LibJS: Store full realized SourceRange with each AST node 2025-12-29 13:36:01 +01:00