ladybird/Userland/Libraries/LibJS/Bytecode
Andreas Kling 9265385807 LibJS/Bytecode: Don't bother propagating completion values in functions
The last completion value in a function is not exposed to the language,
since functions always either return something, or undefined.

Given this, we can avoid emitting code that propagates the completion
value from various statements, as long as we know we're generating code
for a context where the completion value is not accessible. In practical
terms, this means that function code gets to do less completion
shuffling, while global and eval code has to keep doing it.
2024-05-14 21:46:36 +02:00
..
ASTCodegen.cpp LibJS/Bytecode: Don't bother propagating completion values in functions 2024-05-14 21:46: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/Bytecode: Move environment variable caches into instructions 2024-05-13 09:22:14 +02:00
Executable.cpp LibJS/Bytecode: Move environment variable caches into instructions 2024-05-13 09:22:14 +02:00
Executable.h LibJS/Bytecode: Move environment variable caches into instructions 2024-05-13 09:22:14 +02:00
Generator.cpp LibJS/Bytecode: Don't bother propagating completion values in functions 2024-05-14 21:46:36 +02:00
Generator.h LibJS/Bytecode: Don't bother propagating completion values in functions 2024-05-14 21:46: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: Join locals, constants and registers into single vector 2024-05-13 19:54:11 +02:00
Instruction.h LibJS: Replace SetLocal instruction usage with Mov 2024-05-14 06:39:16 +02:00
Interpreter.cpp LibJS/Bytecode: Add environment coordinate caching to SetVariable 2024-05-14 06:39:27 +02:00
Interpreter.h LibJS: Join locals, constants and registers into single vector 2024-05-13 19:54:11 +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: Replace SetLocal instruction usage with Mov 2024-05-14 06:39:16 +02:00
Operand.h LibJS: Join locals, constants and registers into single vector 2024-05-13 19:54:11 +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