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

Reply via email to