ladybird/Userland/Libraries/LibJS/Bytecode
Anonymous d1cc67bbe1 LibJS: Avoid unnecessary ToObject conversion when resolving references
When performing GetValue on a primitive type we do not need to perform
the ToObject conversion as it will resolve to a property on the
prototype object.

To avoid this we skip the initial ToObject conversion on the base value
as it only serves to get the primitive's boxed prototype. We further
specialize on PrimitiveString in order to get efficient behaviour
behaviour for the direct properties.

Depending on the tests anywhere from 20 to 60%, with significant loop
overhead.
2022-02-13 14:44:36 +01:00
..
Pass LibJS: Avoid unnecessary copies in MergeBlocks codegen pass 2022-01-01 15:40:39 +01:00
ASTCodegen.cpp LibJS: Convert ScopeNode declaration functions to ThrowCompletionOr 2022-02-08 09:12:42 +00:00
BasicBlock.cpp LibJS: Always inline the bytecode instruction iterator's operator++ 2021-10-25 13:37:02 +02:00
BasicBlock.h LibJS: Always inline the bytecode instruction iterator's operator++ 2021-10-25 13:37:02 +02:00
Executable.cpp LibJS: Add a separate "identifier table" to bytecode executables 2021-10-24 17:18:07 +02:00
Executable.h LibJS: Add a separate "identifier table" to bytecode executables 2021-10-24 17:18:07 +02:00
Generator.cpp LibJS: Store ECMAScriptFunctionObject bytecode in an OwnPtr 2022-01-31 16:19:23 +01:00
Generator.h LibJS: Store ECMAScriptFunctionObject bytecode in an OwnPtr 2022-01-31 16:19:23 +01:00
IdentifierTable.cpp LibJS: Add a separate "identifier table" to bytecode executables 2021-10-24 17:18:07 +02:00
IdentifierTable.h LibJS: Add a separate "identifier table" to bytecode executables 2021-10-24 17:18:07 +02:00
Instruction.cpp LibJS: Move Instruction::length() to the Op.h header 2021-06-09 09:24:32 +02:00
Instruction.h LibJS: Convert Instruction::execute in bytecode to ThrowCompletionOr 2022-02-08 09:12:42 +00:00
Interpreter.cpp LibJS+Everywhere: Remove VM::exception() and most related functions 2022-02-08 09:12:42 +00:00
Interpreter.h LibJS: Convert Instruction::execute in bytecode to ThrowCompletionOr 2022-02-08 09:12:42 +00:00
Label.h AK: Convert AK::Format formatting helpers to returning ErrorOr<void> 2021-11-17 00:21:13 +01:00
Op.cpp LibJS: Replace uses of MarkedValueList with MarkedVector<Value> 2022-02-09 12:25:27 +00:00
Op.h LibJS: Avoid unnecessary ToObject conversion when resolving references 2022-02-13 14:44:36 +01:00
PassManager.h LibJS: Add a basic pass manager and add some basic passes 2021-06-15 22:06:33 +04:30
Register.h AK: Convert AK::Format formatting helpers to returning ErrorOr<void> 2021-11-17 00:21:13 +01:00
StringTable.cpp LibJS: Use String and move semantics in Bytecode::StringTable 2021-10-24 17:18:07 +02:00
StringTable.h LibJS: Use String and move semantics in Bytecode::StringTable 2021-10-24 17:18:07 +02:00