1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-30 05:42:06 +00:00

LibJS: Stop iterating lexically declared names once 'arguments' is found

In ECMAScriptFunctionObject::function_declaration_instantiation() we
iterate over all lexically declared names of the function scope body to
determine whether any of them is named 'arguments', because we don't
need to create an arguments object in that case. We can also stop at
that point, because the decision won't change anymore.
This commit is contained in:
Linus Groh 2021-10-05 00:02:26 +01:00
parent 3ab22c8012
commit b2bded390a

View file

@ -179,8 +179,10 @@ ThrowCompletionOr<void> ECMAScriptFunctionObject::function_declaration_instantia
if (!has_parameter_expressions && arguments_object_needed) {
scope_body->for_each_lexically_declared_name([&](auto const& name) {
if (name == arguments_name)
if (name == arguments_name) {
arguments_object_needed = false;
return IterationDecision::Break;
}
return IterationDecision::Continue;
});
}