1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-22 17:15:08 +00:00

LibJS: Make EnterUnwindContext a terminator op

Otherwise a basic block could have multiple outgoing edges without
having much reason to do so.
This commit is contained in:
Ali Mohammad Pur 2021-06-13 20:39:40 +04:30 committed by Ali Mohammad Pur
parent e73b142a97
commit 4c7c7c38e2
3 changed files with 11 additions and 3 deletions

View file

@ -258,6 +258,7 @@ void Throw::execute(Bytecode::Interpreter& interpreter) const
void EnterUnwindContext::execute(Bytecode::Interpreter& interpreter) const
{
interpreter.enter_unwind_context(m_handler_target, m_finalizer_target);
interpreter.jump(m_entry_point);
}
void LeaveUnwindContext::execute(Bytecode::Interpreter& interpreter) const
@ -453,7 +454,7 @@ String EnterUnwindContext::to_string(Bytecode::Executable const&) const
{
auto handler_string = m_handler_target.has_value() ? String::formatted("{}", *m_handler_target) : "<empty>";
auto finalizer_string = m_finalizer_target.has_value() ? String::formatted("{}", *m_finalizer_target) : "<empty>";
return String::formatted("EnterUnwindContext handler:{} finalizer:{}", handler_string, finalizer_string);
return String::formatted("EnterUnwindContext handler:{} finalizer:{} entry:{}", handler_string, finalizer_string, m_entry_point);
}
String LeaveUnwindContext::to_string(Bytecode::Executable const&) const