1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 19:45:07 +00:00
serenity/Userland/Libraries/LibJS/Bytecode
Luke Wilde 277132f70d LibJS/Bytecode: Store unwind contexts inside RegisterWindow
Unwind contexts need to be preserved as we exit and re-enter a
generator.

For example, this would previously crash when returning from the try
statement after yielding as we lost the unwind context when yielding,
but still have a LeaveUnwindContext instruction from running
`perform_needed_unwinds` when generating the return statement.
```js
function* a() {
    try {
        return (yield 1);
    } catch {}
}

iter = a();
iter.next();
iter.next();
```
2022-11-26 12:55:59 +01:00
..
Pass LibJS: Add a note about inaccuracies to UnifySameBlocks 2022-11-01 11:21:18 +01:00
ASTCodegen.cpp LibJS/Bytecode: Make yield by itself yield undefined 2022-11-26 12:55:59 +01:00
BasicBlock.cpp AK+LibGfx+LibJS: Pass -1 as the file descriptor to anonymous mmap 2022-07-19 12:39:24 +02:00
BasicBlock.h LibJS: Always inline the bytecode instruction iterator's operator++ 2021-10-25 13:37:02 +02:00
CodeGenerationError.h LibJS: Make ASTNode::generate_bytecode() fallible 2022-02-13 14:41:33 +00:00
Executable.cpp LibJS: Add a separate "identifier table" to bytecode executables 2021-10-24 17:18:07 +02:00
Executable.h LibJS/Bytecode: Determine strict mode on an executable basis 2022-07-18 09:00:21 +01:00
Generator.cpp LibJS/Bytecode: Determine strict mode on an executable basis 2022-07-18 09:00:21 +01:00
Generator.h LibJS: Align Instructions as void* and roundup variably sized ones sizes 2022-10-01 00:04:02 +01:00
IdentifierTable.cpp LibJS: Add a separate "identifier table" to bytecode executables 2021-10-24 17:18:07 +02:00
IdentifierTable.h AK+Everywhere: Replace DistinctNumeric bool parameters with named ones 2022-11-11 17:50:53 +03:30
Instruction.cpp LibJS: Move Instruction::length() to the Op.h header 2021-06-09 09:24:32 +02:00
Instruction.h LibJS: Align Instructions as void* and roundup variably sized ones sizes 2022-10-01 00:04:02 +01:00
Interpreter.cpp LibJS/Bytecode: Store unwind contexts inside RegisterWindow 2022-11-26 12:55:59 +01:00
Interpreter.h LibJS/Bytecode: Store unwind contexts inside RegisterWindow 2022-11-26 12:55:59 +01:00
Label.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Op.cpp LibJS+LibWeb: Make Runtime/AbstractOperations.h not include AST.h 2022-11-23 16:05:59 +00:00
Op.h LibJS: Forward a string aproximation of the CallExpression to Call Ops 2022-10-17 01:36:41 +02:00
PassManager.h LibJS: Add a basic pass manager and add some basic passes 2021-06-15 22:06:33 +04:30
Register.h LibJS: Remove Bytecode::Register::global_object() 2022-08-23 13:58:30 +01:00
StringTable.cpp LibJS: Use String and move semantics in Bytecode::StringTable 2021-10-24 17:18:07 +02:00
StringTable.h AK+Everywhere: Replace DistinctNumeric bool parameters with named ones 2022-11-11 17:50:53 +03:30