ladybird/Userland/Libraries/LibJS/Bytecode
Aliaksandr Kalenik 6fb1d9e516 LibJS: Stop using execute_ast_node() for class property evaluation
Instead, generate bytecode to execute their AST nodes and save the
resulting operands inside the NewClass instruction.

Moving property expression evaluation to happen before NewClass
execution also moves along creation of new private environment and
its population with private members (private members should be visible
during property evaluation).

Before:
- NewClass

After:
- CreatePrivateEnvironment
- AddPrivateName
- ...
- AddPrivateName
- NewClass
- LeavePrivateEnvironment
2024-05-12 19:10:25 +02:00
..
ASTCodegen.cpp LibJS: Stop using execute_ast_node() for class property evaluation 2024-05-12 19:10:25 +02:00
BasicBlock.cpp LibJS/Bytecode: Store labels as basic block index during compilation 2024-05-07 09:15:40 +02:00
BasicBlock.h LibJS/Bytecode: Do basic compare-and-jump peephole optimization 2024-05-10 15:03:24 +00:00
Builtins.cpp LibJS: Introduce Builtins 2023-11-17 19:06:25 +01:00
Builtins.h LibJS/Bytecode: Reorder Call instruction members to make it smaller 2024-05-10 15:03:24 +00:00
CodeGenerationError.cpp LibJS: Add to_string definitions to CodeGenerationError and ParserError 2023-02-17 09:14:23 -05:00
CodeGenerationError.h LibJS: Remove unused CodeGenerationError::to_deprecated_string 2023-02-17 09:14:23 -05:00
CommonImplementations.h LibJS: Stop using execute_ast_node() for class property evaluation 2024-05-12 19:10:25 +02:00
Executable.cpp LibJS/Bytecode: Keep instruction source mappings in Executable 2024-05-07 09:15:40 +02:00
Executable.h LibJS/Bytecode: Keep instruction source mappings in Executable 2024-05-07 09:15:40 +02:00
Generator.cpp LibJS/Bytecode: Don't create empty lexical environments 2024-05-11 15:22:36 +02:00
Generator.h LibJS/Bytecode: Don't create empty lexical environments 2024-05-11 15:22:36 +02:00
IdentifierTable.cpp LibJS/Bytecode: Make IdentifierTableIndex a 32-bit index 2024-05-07 09:15:40 +02:00
IdentifierTable.h LibJS/Bytecode: Make IdentifierTableIndex a 32-bit index 2024-05-07 09:15:40 +02:00
Instruction.cpp LibJS/Bytecode: Remove Instruction::m_length field 2024-05-07 09:15:40 +02:00
Instruction.h LibJS: Stop using execute_ast_node() for class property evaluation 2024-05-12 19:10:25 +02:00
Interpreter.cpp LibJS: Stop using execute_ast_node() for class property evaluation 2024-05-12 19:10:25 +02:00
Interpreter.h LibJS: Emit bytecode for function declaration instantiation 2024-05-11 11:43:05 +02:00
Label.cpp LibJS/Bytecode: Store labels as basic block index during compilation 2024-05-07 09:15:40 +02:00
Label.h LibJS/Bytecode: Store labels as basic block index during compilation 2024-05-07 09:15:40 +02:00
Op.h LibJS: Stop using execute_ast_node() for class property evaluation 2024-05-12 19:10:25 +02:00
Operand.h LibJS/Bytecode: Reuse bytecode registers 2024-05-09 09:12:13 +02:00
RegexTable.cpp LibJS/Bytecode: Don't reparse regular expressions on instantiation 2023-07-13 13:30:49 +02:00
RegexTable.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Register.h LibJS: Stash thrown exception in a register before executing finalizer 2023-11-03 20:27:45 +01:00
ScopedOperand.cpp LibJS/Bytecode: Reuse bytecode registers 2024-05-09 09:12:13 +02:00
ScopedOperand.h LibJS/Bytecode: Do basic compare-and-jump peephole optimization 2024-05-10 15:03:24 +00:00
StringTable.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
StringTable.h LibJS/Bytecode: Make StringTableIndex be a 32-bit index 2024-05-10 15:03:24 +00:00