1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-03 05:32:13 +00:00

LibJS: Prepend callee's bound arguments to the CallFrame and set the

this_value to the callee's bound |this| in CallExpression::execute()
This commit is contained in:
Jack Karamanian 2020-04-19 14:51:17 -05:00 committed by Andreas Kling
parent 5750edd859
commit b3800829da

View file

@ -114,6 +114,9 @@ Value CallExpression::execute(Interpreter& interpreter) const
auto& function = static_cast<Function&>(callee.as_object());
MarkedValueList arguments(interpreter.heap());
for (auto bound_argument : function.bound_arguments()) {
arguments.append(bound_argument);
}
for (size_t i = 0; i < m_arguments.size(); ++i) {
auto value = m_arguments[i].execute(interpreter);
if (interpreter.exception())
@ -138,7 +141,7 @@ Value CallExpression::execute(Interpreter& interpreter) const
call_frame.this_value = new_object;
result = function.construct(interpreter);
} else {
call_frame.this_value = this_value;
call_frame.this_value = function.bound_this().value_or(this_value);
result = function.call(interpreter);
}