ladybird/Libraries/LibJS
Andreas Kling f574ef528d LibJS: Replace Vector<Value> with Value* for named property storage
Replace the 24-byte Vector<Value> m_storage with an 8-byte raw
Value* m_named_properties pointer, backed by a malloc'd allocation
with an inline capacity header.

Memory layout of the allocation:
  [u32 capacity] [u32 padding] [Value 0] [Value 1] ...
  m_named_properties points to Value 0.

This shrinks JS::Object from 64 to 48 bytes (on non-Windows
platforms) and removes one level of indirection for property access
in the asm interpreter, since the data pointer is now stored directly
on the object rather than inside a Vector's internal metadata.

Growth policy: max(4, max(needed, old_capacity * 2)).
2026-03-17 22:28:35 -05:00
..
AsmIntGen LibJS/AsmIntGen: Emit unwind info for AArch64 2026-03-16 19:30:40 -05:00
Bytecode LibJS: Replace Vector<Value> with Value* for named property storage 2026-03-17 22:28:35 -05:00
BytecodeDef LibJS: Use the 2024 Rust edition for AsmIntGen and ByteCodeDef 2026-03-11 16:57:09 -04: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: Replace Vector<Value> with Value* for named property storage 2026-03-17 22:28:35 -05:00
Rust LibJS: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05: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
CMakeLists.txt Meta: Replace corrosion with custom function that tracks dependencies 2026-03-11 16:57:09 -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: Fix AssignmentTargetType for NewExpression and strict mode 2026-03-13 13:08:22 -05:00
Parser.h LibJS: Fix AssignmentTargetType for NewExpression and strict mode 2026-03-13 13:08:22 -05: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: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05:00
RustIntegration.h LibJS: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05: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: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05:00
Script.h LibJS: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05: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: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05:00
SourceTextModule.h LibJS: Generate FFI header using cbindgen instead of hand-rolling 2026-03-17 20:49:50 -05: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 Revert "LibJS: Shrink ExecutionContext by replacing ScriptOrModule …" 2026-03-11 23:13:18 +00: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