LibJS: Cleanup unwind state when transferring control out of a finalizer

This does two things:
* Clear exceptions when transferring control out of a finalizer
  Otherwise they would resurface at the end of the next finalizer
  (see test the new test case), or at the end of a function
* Pop one scheduled jump when transferring control out of a finalizer
  This removes one old FIXME
This commit is contained in:
Hendiadyoin1 2024-04-11 11:58:18 +02:00 committed by Andreas Kling
commit ada5027163
Notes: sideshowbarker 2024-07-17 06:38:11 +09:00
8 changed files with 65 additions and 6 deletions

View file

@ -532,7 +532,10 @@ void Generator::generate_scoped_jump(JumpType type)
switch_to_basic_block(block);
last_was_finally = true;
break;
};
}
case LeaveFinally:
emit<Op::LeaveFinally>();
break;
}
}
VERIFY_NOT_REACHED();