diff --git a/Userland/Libraries/LibJS/Bytecode/Op.cpp b/Userland/Libraries/LibJS/Bytecode/Op.cpp index 3bcd99272f..da022f5b3a 100644 --- a/Userland/Libraries/LibJS/Bytecode/Op.cpp +++ b/Userland/Libraries/LibJS/Bytecode/Op.cpp @@ -400,22 +400,15 @@ ThrowCompletionOr Call::execute_impl(Bytecode::Interpreter& interpreter) c auto this_value = interpreter.reg(m_this_value); + MarkedVector argument_values { interpreter.vm().heap() }; + for (size_t i = 0; i < m_argument_count; ++i) + argument_values.append(interpreter.reg(m_arguments[i])); + Value return_value; - - if (m_argument_count == 0 && m_type == CallType::Call) { - auto return_value_or_error = call(interpreter.global_object(), function, this_value); - if (!return_value_or_error.is_error()) - return_value = return_value_or_error.release_value(); - } else { - MarkedVector argument_values { interpreter.vm().heap() }; - for (size_t i = 0; i < m_argument_count; ++i) - argument_values.append(interpreter.reg(m_arguments[i])); - - if (m_type == CallType::Call) - return_value = TRY(call(interpreter.global_object(), function, this_value, move(argument_values))); - else - return_value = TRY(construct(interpreter.global_object(), function, move(argument_values))); - } + if (m_type == CallType::Call) + return_value = TRY(call(interpreter.global_object(), function, this_value, move(argument_values))); + else + return_value = TRY(construct(interpreter.global_object(), function, move(argument_values))); interpreter.accumulator() = return_value; return {};