Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: dd3af5604c58cde8de0ed7632419d6f386b1b3d3
      
https://github.com/WebKit/WebKit/commit/dd3af5604c58cde8de0ed7632419d6f386b1b3d3
  Author: Keita Nonaka <[email protected]>
  Date:   2025-10-19 (Sun, 19 Oct 2025)

  Changed paths:
    M JSTests/microbenchmarks/string-substring-constants-binary.js
    M JSTests/microbenchmarks/string-substring-constants-identity.js
    M JSTests/microbenchmarks/string-substring-constants.js
    A JSTests/microbenchmarks/string-substring-infinity.js
    M JSTests/microbenchmarks/string-substring-length-constant.js
    A JSTests/microbenchmarks/string-substring-nan.js
    M JSTests/microbenchmarks/string-substring.js
    A JSTests/stress/string-substring.js
    M Source/JavaScriptCore/runtime/StringPrototype.cpp

  Log Message:
  -----------
  [JSC] Conform `String.prototype.substring` to TC39 spec
https://bugs.webkit.org/show_bug.cgi?id=300578

Reviewed by Yusuke Suzuki and Darin Adler.

This patch conforms `String.prototype.substring` to TC39 spec [1],
such as using `ToIntegerOrInfinity` instead of `ToNumber`.

This patch introduces no performance regressions.

                                                TipOfTree                   
Patched                            Ratio
string-substring-constants                 0.4274+-0.0569            
0.4026+-0.0112          might be 1.0617x faster
string-substring-constants-binary          0.3904+-0.0315     ?      
0.3952+-0.0442        ? might be 1.0122x slower
string-substring-infinity                  0.5556+-0.0095            
0.5314+-0.0269          might be 1.0455x faster
string-substring-length-constant           0.3914+-0.0278     ?      
0.4163+-0.0378        ? might be 1.0636x slower
string-substring-nan                       0.4938+-0.0259            
0.4894+-0.0293
string-substring-constants-identity        0.3593+-0.0146            
0.3423+-0.0323          might be 1.0496x faster

[1]: https://tc39.es/ecma262/#sec-string.prototype.substring

Tests: JSTests/microbenchmarks/string-substring-infinity.js
       JSTests/microbenchmarks/string-substring-nan.js
       JSTests/stress/string-substring.js

* JSTests/microbenchmarks/string-substring-constants-binary.js:
(shouldBe):
(test1):
* JSTests/microbenchmarks/string-substring-constants-identity.js:
(shouldBe):
(test1):
* JSTests/microbenchmarks/string-substring-constants.js:
(shouldBe):
(test1):
* JSTests/microbenchmarks/string-substring-infinity.js: Added.
(shouldBe):
(test):
(i.test):
* JSTests/microbenchmarks/string-substring-length-constant.js:
(shouldBe):
(test1):
* JSTests/microbenchmarks/string-substring-nan.js: Added.
(shouldBe):
(test):
(i.test):
* JSTests/microbenchmarks/string-substring.js:
(shouldBe):
(test1):
* JSTests/stress/string-substring.js: Added.
(shouldBe):
* Source/JavaScriptCore/runtime/StringPrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):

Canonical link: https://commits.webkit.org/301783@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