ladybird/Userland/Libraries/LibJS/Bytecode
Andreas Kling b5a070e8ce LibJS/Bytecode: Don't create empty lexical environments
This patch stops emitting the BlockDeclarationInstantiation instruction
when there are no locals, and no function declarations in the scope.

We were spending 20% of CPU time on https://ventrella.com/Clusters/ just
creating empty environments for no reason.
2024-05-11 15:22:36 +02:00
..
ASTCodegen.cpp LibJS/Bytecode: Don't create empty lexical environments 2024-05-11 15:22:36 +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: Change NewFunction instruction to accept FunctionNode 2024-05-11 11:43:05 +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: Emit bytecode for function declaration instantiation 2024-05-11 11:43:05 +02:00
Interpreter.cpp LibJS: Ensure capacity for created lexical and variable environments 2024-05-11 11:43:05 +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: Ensure capacity for created lexical and variable environments 2024-05-11 11:43:05 +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