diff --git a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp index a468c9cf8c3..c078fc9ac7b 100644 --- a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp +++ b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp @@ -642,7 +642,12 @@ Bytecode::CodeGenerationErrorOr> AssignmentExpression::g return TRY(m_rhs->generate_bytecode(generator)).value(); }()); - auto dst = choose_dst(generator, preferred_dst); + // OPTIMIZATION: If LHS is a local, we can write the result directly into it. + auto dst = [&] { + if (lhs.operand().is_local()) + return lhs; + return choose_dst(generator, preferred_dst); + }(); switch (m_op) { case AssignmentOp::AdditionAssignment: