1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-09 09:34:57 +09:00

LibJS: Skip "return" method call while closing built-in iterators

"return" method is not defined on any of builtin iterators, so we could
skip it, avoiding method lookup.

I measured 10% improvement in array-destructuring-assignment.js micro
benchmark with this change.
This commit is contained in:
Aliaksandr Kalenik 2025-05-01 18:27:55 +03:00 committed by Andreas Kling
parent 6d2f393f2b
commit 6426586052
Notes: github-actions[bot] 2025-05-01 16:18:01 +00:00

View file

@ -271,6 +271,10 @@ static Completion iterator_close_impl(VM& vm, IteratorRecord const& iterator_rec
// 2. Let iterator be iteratorRecord.[[Iterator]].
auto iterator = iterator_record.iterator;
// OPTIMIZATION: "return" method is not defined on any of iterators we treat as built-in.
if (iterator->as_builtin_iterator())
return completion;
// 3. Let innerResult be Completion(GetMethod(iterator, "return")).
auto inner_result = ThrowCompletionOr<Value> { js_undefined() };
auto get_method_result = Value(iterator).get_method(vm, vm.names.return_);