1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:08:12 +00:00

LibJS: Evaluate CallExpression arguments before pushing a CallFrame

This commit is contained in:
Jack Karamanian 2020-04-01 22:28:48 -05:00 committed by Andreas Kling
parent 8f08ec5038
commit bb15b37228
2 changed files with 23 additions and 2 deletions

View file

@ -101,16 +101,20 @@ Value CallExpression::execute(Interpreter& interpreter) const
auto& function = static_cast<Function&>(callee.as_object());
auto& call_frame = interpreter.push_call_frame();
Vector<Value> arguments;
arguments.ensure_capacity(m_arguments.size());
for (size_t i = 0; i < m_arguments.size(); ++i) {
auto value = m_arguments[i].execute(interpreter);
if (interpreter.exception())
return {};
call_frame.arguments.append(value);
arguments.append(value);
if (interpreter.exception())
return {};
}
auto& call_frame = interpreter.push_call_frame();
call_frame.arguments = move(arguments);
Object* new_object = nullptr;
Value result;
if (is_new_expression()) {