diff --git a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp index f62ceec1bb..5ff9ea8188 100644 --- a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp +++ b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp @@ -2048,24 +2048,21 @@ Bytecode::CodeGenerationErrorOr IfStatement::generate_bytecode(Bytecode::G auto& true_block = generator.make_block(); auto& false_block = generator.make_block(); + auto& end_block = generator.make_block(); TRY(m_predicate->generate_bytecode(generator)); generator.emit( Bytecode::Label { true_block }, Bytecode::Label { false_block }); - Bytecode::Op::Jump* true_block_jump { nullptr }; - generator.switch_to_basic_block(true_block); generator.emit(js_undefined()); TRY(m_consequent->generate_bytecode(generator)); if (!generator.is_current_block_terminated()) { - // FIXME: This should be initialized to the right target right away. - true_block_jump = &generator.emit(Bytecode::Label { true_block }); + generator.emit(Bytecode::Label { end_block }); } generator.switch_to_basic_block(false_block); - auto& end_block = generator.make_block(); generator.emit(js_undefined()); if (m_alternate) @@ -2073,9 +2070,6 @@ Bytecode::CodeGenerationErrorOr IfStatement::generate_bytecode(Bytecode::G if (!generator.is_current_block_terminated()) generator.emit(Bytecode::Label { end_block }); - if (true_block_jump) - true_block_jump->set_targets(Bytecode::Label { end_block }, {}); - generator.switch_to_basic_block(end_block); return {}; } diff --git a/Userland/Libraries/LibJS/Bytecode/Op.h b/Userland/Libraries/LibJS/Bytecode/Op.h index 7164a98691..535565e038 100644 --- a/Userland/Libraries/LibJS/Bytecode/Op.h +++ b/Userland/Libraries/LibJS/Bytecode/Op.h @@ -830,12 +830,6 @@ public: { } - void set_targets(Label true_target, Optional