Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 45e78004bc87ddef0d92822861c5799da3cc896b
https://github.com/WebKit/WebKit/commit/45e78004bc87ddef0d92822861c5799da3cc896b
Author: Sosuke Suzuki <[email protected]>
Date: 2025-09-15 (Mon, 15 Sep 2025)
Changed paths:
A JSTests/stress/set-prototype-symmetricDifference-empty-sets.js
A JSTests/stress/set-prototype-symmetricDifference-generic-object.js
A JSTests/stress/set-prototype-symmetricDifference-iterator-effects.js
A JSTests/stress/set-prototype-symmetricDifference-large-sets.js
A JSTests/stress/set-prototype-symmetricDifference-property-access-order.js
A JSTests/stress/set-prototype-symmetricDifference-reference.js
A JSTests/stress/set-prototype-symmetricDifference-special-values.js
M Source/JavaScriptCore/builtins/SetPrototype.js
M Source/JavaScriptCore/runtime/SetPrototype.cpp
Log Message:
-----------
[JSC] Implement `Set.prototype.symmetricDifference` in C++
https://bugs.webkit.org/show_bug.cgi?id=298810
Reviewed by Yusuke Suzuki.
This patch changes to implement `Set#symmetricDifference` in C++.
TipOfTree Patched
set-symmetricDifference 33.7277+-1.0556 ^ 27.5704+-0.2117
^ definitely 1.2233x faster
* JSTests/stress/set-prototype-symmetricDifference-empty-sets.js: Added.
(shouldBe):
(let.emptySetLike.has):
(let.emptySetLike.return.next):
(let.emptySetLike.keys):
(let.fakeSizeSetLike.has):
(let.fakeSizeSetLike.return.next):
(let.fakeSizeSetLike.keys):
* JSTests/stress/set-prototype-symmetricDifference-generic-object.js: Added.
(shouldBe):
(let.setLikeObject.has):
(let.setLikeObject.return.next):
(let.setLikeObject.keys):
(let.set new):
(let.partialMatch.has):
(let.partialMatch.return.next):
(let.partialMatch.keys):
(let.result.set symmetricDifference):
(shouldThrow):
(result.set symmetricDifference):
* JSTests/stress/set-prototype-symmetricDifference-iterator-effects.js: Added.
(shouldBe):
(main.const.result.set symmetricDifference):
(main.const.result.set symmetricDifference.):
(set testIteratorModification.let.otherObject.has):
(set testIteratorModification.let.otherObject.let.iterator.next):
(set testIteratorModification.let.otherObject.keys):
(set testIteratorModification.let.set new):
* JSTests/stress/set-prototype-symmetricDifference-large-sets.js: Added.
(shouldBe):
(let.perfSetLike.has):
(let.perfSetLike.return.next):
(let.perfSetLike.keys):
* JSTests/stress/set-prototype-symmetricDifference-property-access-order.js:
Added.
(shouldBe):
(main.let.obj.get size):
(main.let.obj.get has):
(main.let.obj.get keys.return.get next):
(main.let.obj.get keys):
(testEarlyReturn.let.obj.get size):
(testEarlyReturn.let.obj.get has):
(testEarlyReturn.let.obj.get keys.return.next):
(testEarlyReturn.let.obj.get keys):
* JSTests/stress/set-prototype-symmetricDifference-reference.js: Added.
(shouldBe):
(main.const.result4.set1.symmetricDifference):
(main.const.result4.set1.symmetricDifference.):
(main):
* JSTests/stress/set-prototype-symmetricDifference-special-values.js: Added.
(shouldBe):
(let.setLike.has):
(let.setLike.return.next):
(let.setLike.keys):
(let.set new):
(let.symbolSetLike.has):
(let.symbolSetLike.return.next):
(let.symbolSetLike.keys):
(let.result.set symmetricDifference):
(let.objectSetLike.has):
(let.objectSetLike.return.next):
(let.objectSetLike.keys):
* Source/JavaScriptCore/builtins/SetPrototype.js:
(linkTimeConstant.alwaysInline.getSetSizeAsInt):
(symmetricDifference.wrapper.return.next): Deleted.
(symmetricDifference.wrapper.iterator): Deleted.
(symmetricDifference): Deleted.
* Source/JavaScriptCore/runtime/SetPrototype.cpp:
(JSC::SetPrototype::finishCreation):
(JSC::fastSetSymmetricDifference):
(JSC::JSC_DEFINE_HOST_FUNCTION):
Canonical link: https://commits.webkit.org/300012@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes