1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:47:35 +00:00

LibJS/JIT: Update "unwind context" stack in JIT code

Until now, the unwind context stack has not been maintained by jitted
code, which meant we were unable to support the `with` statement.
This is a first step towards supporting that by making jitted code
call out to C++ to update the unwind context stack when entering/leaving
unwind contexts.

We also introduce a new "Catch" bytecode instruction that moves the
current exception into the accumulator. It's always emitted at the start
of a "catch" block.
This commit is contained in:
Andreas Kling 2023-11-11 23:19:46 +01:00
parent 298dfa96a4
commit cfdb8a2756
7 changed files with 60 additions and 7 deletions

View file

@ -83,6 +83,7 @@ private:
O(EnterUnwindContext, enter_unwind_context) \
O(LeaveUnwindContext, leave_unwind_context) \
O(Throw, throw) \
O(Catch, catch) \
O(CreateLexicalEnvironment, create_lexical_environment) \
O(LeaveLexicalEnvironment, leave_lexical_environment) \
O(ToNumeric, to_numeric) \