[webkit-changes] [WebKit/WebKit] 4cd206: [JSC] Add fast path for `Iterator.prototype.toArray`
SUZUKI Sosuke
noreply at github.com
Sat Sep 14 08:21:23 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4cd20629601f53916b5afc75bf2c3bac83980f66
https://github.com/WebKit/WebKit/commit/4cd20629601f53916b5afc75bf2c3bac83980f66
Author: Sosuke Suzuki <aosukeke at gmail.com>
Date: 2024-09-14 (Sat, 14 Sep 2024)
Changed paths:
A JSTests/microbenchmarks/iterator-prototype-toArray-for-array.js
A JSTests/stress/iterator-prototype-toArray-empty.js
M Source/JavaScriptCore/runtime/ArrayPrototype.cpp
M Source/JavaScriptCore/runtime/ArrayPrototypeInlines.h
M Source/JavaScriptCore/runtime/JSArray.cpp
M Source/JavaScriptCore/runtime/JSArray.h
M Source/JavaScriptCore/runtime/JSArrayInlines.h
M Source/JavaScriptCore/runtime/JSIteratorPrototype.cpp
Log Message:
-----------
[JSC] Add fast path for `Iterator.prototype.toArray`
https://bugs.webkit.org/show_bug.cgi?id=279489
Reviewed by Yusuke Suzuki.
This patch adds a fast path for `Iterator.prototype.toArray.call(Array)`. It uses the same logic as
the already existing fast path for `Array.from(Array)`[1].
With this patch, performance on microbenchmarks improves by approximately 2.3x.
TipOfTree Patched
iterator-prototype-toArray-for-array 0.7119+-0.0159 ^ 0.3019+-0.0052 ^ definitely 2.3578x faster
Even though this patch shares some code with `Array.from`, there are no performance regressions.
TipOfTree Patched
array-from-array 0.3007+-0.0145 0.2976+-0.0057 might be 1.0103x faster
array-from-arraylike 29.8513+-0.4606 ^ 29.1788+-0.1179 ^ definitely 1.0230x faster
[1]: https://commits.webkit.org/269690@main
* JSTests/microbenchmarks/iterator-prototype-toArray-for-array.js: Added.
* JSTests/stress/iterator-prototype-toArray-empty.js: Added.
(shouldBe):
(throw.new.Error):
(else.shouldBe):
* Source/JavaScriptCore/runtime/ArrayPrototype.cpp:
(JSC::concatAppendOne):
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::moveElements): Deleted.
(JSC::clearElement): Deleted.
(JSC::copyElements): Deleted.
* Source/JavaScriptCore/runtime/ArrayPrototypeInlines.h:
(JSC::getProperty): Deleted.
* Source/JavaScriptCore/runtime/JSArray.cpp:
(JSC::clearElement):
* Source/JavaScriptCore/runtime/JSArray.h:
(JSC::moveArrayElements):
(JSC::clearElement):
(JSC::copyArrayElements):
* Source/JavaScriptCore/runtime/JSArrayInlines.h:
(JSC::getProperty):
* Source/JavaScriptCore/runtime/JSIteratorPrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
Canonical link: https://commits.webkit.org/283672@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list