diff --git a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp index b55a79dddd..c9c89557d1 100644 --- a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp +++ b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp @@ -1134,29 +1134,23 @@ void TaggedTemplateLiteral::generate_bytecode(Bytecode::Generator& generator) co void UpdateExpression::generate_bytecode(Bytecode::Generator& generator) const { - if (is(*m_argument)) { - auto& identifier = static_cast(*m_argument); - generator.emit(generator.intern_identifier(identifier.string())); + generator.emit_load_from_reference(*m_argument); - Optional previous_value_for_postfix_reg; - if (!m_prefixed) { - previous_value_for_postfix_reg = generator.allocate_register(); - generator.emit(*previous_value_for_postfix_reg); - } - - if (m_op == UpdateOp::Increment) - generator.emit(); - else - generator.emit(); - - generator.emit(generator.intern_identifier(identifier.string())); - - if (!m_prefixed) - generator.emit(*previous_value_for_postfix_reg); - return; + Optional previous_value_for_postfix_reg; + if (!m_prefixed) { + previous_value_for_postfix_reg = generator.allocate_register(); + generator.emit(*previous_value_for_postfix_reg); } - TODO(); + if (m_op == UpdateOp::Increment) + generator.emit(); + else + generator.emit(); + + generator.emit_store_to_reference(*m_argument); + + if (!m_prefixed) + generator.emit(*previous_value_for_postfix_reg); } void ThrowStatement::generate_bytecode(Bytecode::Generator& generator) const