ladybird/Libraries/LibJS/Bytecode
Andreas Kling f558cd9f0d LibJS: Add inline caching for object literal instantiation
When instantiating an object literal, we go through the list of
properties and add them one by one to the new object. However, we were
totally neglecting to cache the shape transitions incurred by this
process, even though we had allocated a PropertyLookupCache for it.

1.25x speedup on Octane/splay.js and just generally very useful.
2026-01-08 00:26:57 +01:00
..
ASTCodegen.cpp LibJS: Follow the spec more closely for tagged template literals 2026-01-06 23:25:36 +01:00
BasicBlock.cpp LibJS: Stop worrying about Instruction destructors 2025-11-21 09:46:03 +01:00
BasicBlock.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
BuiltinAbstractOperationsEnabled.h LibJS: Introduce NativeJavaScriptBackedFunction 2025-11-30 11:54:54 +01:00
Builtins.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Builtins.h LibJS: Skip generic call when using regexp builtins in StringPrototype 2025-12-13 13:51:12 -06:00
Bytecode.def LibJS: Follow the spec more closely for tagged template literals 2026-01-06 23:25:36 +01:00
CodeGenerationError.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
CodeGenerationError.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
Executable.cpp LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
Executable.h LibJS: Follow the spec more closely for tagged template literals 2026-01-06 23:25:36 +01:00
FormatOperand.h LibJS: Flatten Operand to 32-bit index in bytecode instruction stream 2025-12-09 21:44:13 -06:00
Generator.cpp LibJS: Follow the spec more closely for tagged template literals 2026-01-06 23:25:36 +01:00
Generator.h LibJS: Follow the spec more closely for tagged template literals 2026-01-06 23:25:36 +01:00
IdentifierTable.cpp LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
IdentifierTable.h LibJS: Give Interpreter a direct pointer to the identifier table 2025-10-07 23:50:51 +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 LibJS: Mark Not and Typeof as non-throwing instructions 2025-12-09 21:44:13 -06:00
Interpreter.cpp LibJS: Pre-size arrays created by NewArray and NewPrimitiveArray 2026-01-08 00:26:57 +01:00
Interpreter.h LibJS: Cache fully-formed PropertyKeys in Executable 2025-12-11 14:34:45 -06: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 LibJS: Flatten Operand to 32-bit index in bytecode instruction stream 2025-12-09 21:44:13 -06:00
PropertyAccess.h LibJS: Add inline caching for object literal instantiation 2026-01-08 00:26:57 +01:00
PropertyKeyTable.cpp LibJS: Cache fully-formed PropertyKeys in Executable 2025-12-11 14:34:45 -06:00
PropertyKeyTable.h LibJS+LibWeb: Add missing GC marking visits 2026-01-07 12:48:58 +01:00
PutKind.h LibJS: Rename Bytecode::Op::PropertyKind => Bytecode::PutKind 2025-10-11 20:08:58 +02:00
RegexTable.cpp LibJS: Don't rerun regexp optimizer every time a regexp literal is used 2025-12-12 11:43:35 -06:00
RegexTable.h LibJS: Don't rerun regexp optimizer every time a regexp literal is used 2025-12-12 11:43:35 -06:00
Register.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
ScopedOperand.cpp LibJS: Flatten Operand to 32-bit index in bytecode instruction stream 2025-12-09 21:44:13 -06:00
ScopedOperand.h LibJS: Revert Enable EXPLICIT_SYMBOL_EXPORT 2025-07-22 11:51:29 -04:00
StringTable.cpp LibJS+LibWeb: Port interned bytecode strings to UTF-16 2025-08-14 10:27:08 +02:00
StringTable.h LibJS+LibWeb: Port interned bytecode strings to UTF-16 2025-08-14 10:27:08 +02:00