ladybird/Libraries/LibJS/Bytecode
Andreas Kling e3841a7392 LibJS: Compact Shape property table to a sorted flat array
Replace the lazy per-shape OrderedHashMap cache for non-dictionary
shapes with a GC-allocated descriptor array. Store descriptors in hash
order for lookup while keeping an enum index so callers can still walk
properties in insertion order.

Keep dictionary shapes on the mutable OrderedHashMap path, and migrate
callers that enumerated Shape::property_table() to the new insertion
order iterator. Cap descriptor arrays to their compact u16 index range
and keep larger dictionary shapes on the mutable table path across
prototype transitions and prototype clones.

Add coverage for setting the prototype of a dictionary object with more
than 65536 named properties.
2026-05-14 19:59:40 +02:00
..
AsmInterpreter LibJS+LibWeb: Allow instantiating DataBlock with an external buffer 2026-05-10 16:41:42 +02:00
BasicBlock.cpp LibJS: Stop worrying about Instruction destructors 2025-11-21 09:46:03 +01:00
BasicBlock.h LibJS: Drop source ranges from bytecode source maps 2026-05-14 09:41:03 +02:00
BuiltinAbstractOperationsEnabled.h LibJS: Introduce NativeJavaScriptBackedFunction 2025-11-30 11:54:54 +01:00
Builtins.h LibJS: Add a String.fromCharCode builtin opcode 2026-04-12 19:15:50 +02:00
Bytecode.def LibJS: Add a String.fromCharCode builtin opcode 2026-04-12 19:15:50 +02:00
ClassBlueprint.h LibJS: Add ClassBlueprint data structures 2026-02-11 23:57:41 +01:00
Debug.h LibJS: Move bytecode interpreter state to VM 2026-04-13 18:29:43 +02:00
Executable.cpp LibJS: Stop persisting basic_block_start_offsets on Executable 2026-05-14 12:08:12 +02:00
Executable.h LibJS: Stop persisting basic_block_start_offsets on Executable 2026-05-14 12:08:12 +02:00
FormatOperand.h LibJS: Stop persisting basic_block_start_offsets on Executable 2026-05-14 12:08:12 +02:00
IdentifierTable.cpp LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
IdentifierTable.h LibJS: Account executable storage as external memory 2026-05-07 10:03:09 +02:00
Instruction.cpp LibJS: Flatten Operand to 32-bit index in bytecode instruction stream 2025-12-09 21:44:13 -06:00
Instruction.h Meta: Reformat QtCreator file-listing script for readability 2026-02-23 13:10:03 +01:00
Interpreter.cpp LibJS: Compact Shape property table to a sorted flat array 2026-05-14 19:59:40 +02:00
Label.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Label.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Operand.h AK: Add SentinelOptional 2026-03-20 12:03:36 +01:00
PropertyAccess.h LibJS: Remove dead C++ bytecode compilation functions 2026-03-19 21:55:10 -05:00
PropertyKeyTable.cpp LibJS: Cache fully-formed PropertyKeys in Executable 2025-12-11 14:34:45 -06:00
PropertyKeyTable.h LibJS: Account executable storage as external memory 2026-05-07 10:03:09 +02:00
PropertyNameIterator.cpp LibJS: Account runtime storage as external memory 2026-05-07 10:03:09 +02:00
PropertyNameIterator.h LibJS: Account runtime storage as external memory 2026-05-07 10:03:09 +02:00
PutKind.h LibJS: Consolidate Put bytecode instructions and reduce code bloat 2026-03-04 18:53:12 +01:00
RegexTable.cpp LibRegex: Add ECMAScriptRegex and migrate callers 2026-03-27 17:32:19 +01:00
RegexTable.h LibJS: Account executable storage as external memory 2026-05-07 10:03:09 +02:00
Register.h LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00
StringTable.cpp LibJS+LibWeb: Port interned bytecode strings to UTF-16 2025-08-14 10:27:08 +02:00
StringTable.h LibJS: Account executable storage as external memory 2026-05-07 10:03:09 +02:00
Validator.cpp LibJS: Stop persisting basic_block_start_offsets on Executable 2026-05-14 12:08:12 +02:00
Validator.h LibJS: Stop persisting basic_block_start_offsets on Executable 2026-05-14 12:08:12 +02:00