diff --git a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp index cce2818b6b..2ccd183519 100644 --- a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp +++ b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp @@ -1441,6 +1441,7 @@ Bytecode::CodeGenerationErrorOr UpdateExpression::generate_bytecode(Byteco Bytecode::CodeGenerationErrorOr ThrowStatement::generate_bytecode(Bytecode::Generator& generator) const { TRY(m_argument->generate_bytecode(generator)); + generator.perform_needed_unwinds(); generator.emit(); return {}; } diff --git a/Userland/Libraries/LibJS/Bytecode/Generator.h b/Userland/Libraries/LibJS/Bytecode/Generator.h index 91662a9aea..6ebb9ad4a0 100644 --- a/Userland/Libraries/LibJS/Bytecode/Generator.h +++ b/Userland/Libraries/LibJS/Bytecode/Generator.h @@ -167,6 +167,8 @@ public: Optional boundary_to_stop_at; if constexpr (IsSame || IsSame) VERIFY(!is_break_node); + else if constexpr (IsSame) + boundary_to_stop_at = BlockBoundaryType::Unwind; else boundary_to_stop_at = is_break_node ? BlockBoundaryType::Break : BlockBoundaryType::Continue;