1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 04:47:34 +00:00

LibJS/JIT: Compile the EnterUnwindContext and LeaveUnwindContext ops

These push a "valid" unwind context on the stack and check_exception()
now knows how to jump to the (catch) handler if present.

(finally) finalizers will require some more work, but with this change,
we now have basic support for try...catch. :^)
This commit is contained in:
Andreas Kling 2023-10-17 18:37:04 +02:00
parent 9d35016284
commit 9dd5be0186
2 changed files with 63 additions and 2 deletions

View file

@ -38,6 +38,8 @@ private:
void compile_jump_conditional(Bytecode::Op::JumpConditional const&);
void compile_less_than(Bytecode::Op::LessThan const&);
void compile_increment(Bytecode::Op::Increment const&);
void compile_enter_unwind_context(Bytecode::Op::EnterUnwindContext const&);
void compile_leave_unwind_context(Bytecode::Op::LeaveUnwindContext const&);
void store_vm_register(Bytecode::Register, Assembler::Reg);
void load_vm_register(Assembler::Reg, Bytecode::Register);