LibJS/Bytecode: Allow assignment expression to write directly to locals

This commit is contained in:
Andreas Kling 2024-05-14 13:15:14 +02:00
parent d22a06d671
commit ce7c925924
Notes: sideshowbarker 2024-07-17 01:55:29 +09:00

View file

@ -642,7 +642,12 @@ Bytecode::CodeGenerationErrorOr<Optional<ScopedOperand>> 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: