Commit 23903f1
committed
[JSC] Add AtomString Array loop in DFG / FTL
https://bugs.webkit.org/show_bug.cgi?id=318642
rdar://181445937
Reviewed by Yijia Huang.
This patch adds fast path for indexOf / includes with AtomString arrays.
If Array is an AtomString array and input is JSString with AtomString,
we do pointer comparison loop. Also we use compare32 to clean up result
generation in DFG code, which becomes branchless and faster. FTL already
achieves it due to B3's conversion.
Tests: JSTests/stress/array-indexof-includes-cow-atom-strings.js
JSTests/stress/array-indexof-includes-result-boundaries.js
* JSTests/stress/array-indexof-includes-cow-atom-strings.js: Added.
(shouldBe):
(idxFrom):
(inc):
(idxEmptyAndSingle):
* JSTests/stress/array-indexof-includes-result-boundaries.js: Added.
(shouldBe):
(i32Includes):
(i32IncludesFrom):
(dblIndex):
(dblIncludes):
(strIndex):
(strIncludes):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:
* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileArrayIndexOfOrArrayIncludes):
Canonical link: https://commits.webkit.org/316534@main1 parent 6115059 commit 23903f1
4 files changed
Lines changed: 224 additions & 58 deletions
File tree
- JSTests/stress
- Source/JavaScriptCore
- dfg
- ftl
Lines changed: 50 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
Lines changed: 65 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10328 | 10328 | | |
10329 | 10329 | | |
10330 | 10330 | | |
| 10331 | + | |
| 10332 | + | |
| 10333 | + | |
| 10334 | + | |
| 10335 | + | |
| 10336 | + | |
| 10337 | + | |
| 10338 | + | |
| 10339 | + | |
| 10340 | + | |
| 10341 | + | |
| 10342 | + | |
| 10343 | + | |
| 10344 | + | |
10331 | 10345 | | |
10332 | 10346 | | |
10333 | 10347 | | |
| |||
10346 | 10360 | | |
10347 | 10361 | | |
10348 | 10362 | | |
10349 | | - | |
10350 | | - | |
10351 | | - | |
10352 | | - | |
10353 | | - | |
10354 | | - | |
10355 | | - | |
| 10363 | + | |
| 10364 | + | |
10356 | 10365 | | |
10357 | | - | |
10358 | | - | |
10359 | | - | |
10360 | | - | |
| 10366 | + | |
10361 | 10367 | | |
10362 | | - | |
10363 | 10368 | | |
10364 | 10369 | | |
10365 | 10370 | | |
| |||
10411 | 10416 | | |
10412 | 10417 | | |
10413 | 10418 | | |
10414 | | - | |
10415 | | - | |
10416 | | - | |
10417 | | - | |
10418 | | - | |
10419 | | - | |
10420 | | - | |
| 10419 | + | |
| 10420 | + | |
10421 | 10421 | | |
10422 | | - | |
10423 | | - | |
10424 | | - | |
10425 | | - | |
| 10422 | + | |
10426 | 10423 | | |
10427 | | - | |
10428 | 10424 | | |
10429 | 10425 | | |
10430 | 10426 | | |
| |||
10485 | 10481 | | |
10486 | 10482 | | |
10487 | 10483 | | |
| 10484 | + | |
| 10485 | + | |
| 10486 | + | |
| 10487 | + | |
| 10488 | + | |
10488 | 10489 | | |
10489 | 10490 | | |
10490 | | - | |
10491 | | - | |
10492 | | - | |
10493 | | - | |
| 10491 | + | |
| 10492 | + | |
| 10493 | + | |
| 10494 | + | |
| 10495 | + | |
| 10496 | + | |
| 10497 | + | |
| 10498 | + | |
| 10499 | + | |
| 10500 | + | |
| 10501 | + | |
| 10502 | + | |
| 10503 | + | |
| 10504 | + | |
| 10505 | + | |
| 10506 | + | |
| 10507 | + | |
10494 | 10508 | | |
10495 | 10509 | | |
10496 | | - | |
10497 | | - | |
10498 | | - | |
10499 | | - | |
10500 | | - | |
10501 | | - | |
10502 | | - | |
10503 | | - | |
| 10510 | + | |
10504 | 10511 | | |
10505 | 10512 | | |
10506 | 10513 | | |
| |||
10515 | 10522 | | |
10516 | 10523 | | |
10517 | 10524 | | |
10518 | | - | |
10519 | | - | |
10520 | | - | |
10521 | | - | |
10522 | | - | |
10523 | | - | |
10524 | | - | |
10525 | | - | |
10526 | | - | |
10527 | | - | |
10528 | | - | |
10529 | | - | |
| 10525 | + | |
10530 | 10526 | | |
10531 | 10527 | | |
10532 | 10528 | | |
| |||
10594 | 10590 | | |
10595 | 10591 | | |
10596 | 10592 | | |
| 10593 | + | |
| 10594 | + | |
| 10595 | + | |
10597 | 10596 | | |
10598 | 10597 | | |
10599 | 10598 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8750 | 8750 | | |
8751 | 8751 | | |
8752 | 8752 | | |
8753 | | - | |
| 8753 | + | |
| 8754 | + | |
| 8755 | + | |
| 8756 | + | |
| 8757 | + | |
| 8758 | + | |
| 8759 | + | |
| 8760 | + | |
| 8761 | + | |
| 8762 | + | |
8754 | 8763 | | |
8755 | | - | |
8756 | | - | |
8757 | | - | |
8758 | | - | |
8759 | | - | |
| 8764 | + | |
| 8765 | + | |
| 8766 | + | |
| 8767 | + | |
| 8768 | + | |
| 8769 | + | |
| 8770 | + | |
| 8771 | + | |
| 8772 | + | |
8760 | 8773 | | |
8761 | 8774 | | |
8762 | | - | |
| 8775 | + | |
| 8776 | + | |
| 8777 | + | |
| 8778 | + | |
| 8779 | + | |
| 8780 | + | |
| 8781 | + | |
| 8782 | + | |
| 8783 | + | |
8763 | 8784 | | |
8764 | 8785 | | |
8765 | | - | |
8766 | 8786 | | |
8767 | 8787 | | |
8768 | 8788 | | |
| |||
8859 | 8879 | | |
8860 | 8880 | | |
8861 | 8881 | | |
| 8882 | + | |
| 8883 | + | |
| 8884 | + | |
| 8885 | + | |
| 8886 | + | |
| 8887 | + | |
| 8888 | + | |
| 8889 | + | |
| 8890 | + | |
| 8891 | + | |
| 8892 | + | |
| 8893 | + | |
| 8894 | + | |
| 8895 | + | |
| 8896 | + | |
| 8897 | + | |
| 8898 | + | |
| 8899 | + | |
| 8900 | + | |
| 8901 | + | |
| 8902 | + | |
| 8903 | + | |
| 8904 | + | |
| 8905 | + | |
| 8906 | + | |
| 8907 | + | |
| 8908 | + | |
| 8909 | + | |
| 8910 | + | |
| 8911 | + | |
| 8912 | + | |
| 8913 | + | |
8862 | 8914 | | |
8863 | 8915 | | |
8864 | 8916 | | |
8865 | 8917 | | |
8866 | | - | |
| 8918 | + | |
8867 | 8919 | | |
8868 | | - | |
| 8920 | + | |
8869 | 8921 | | |
8870 | 8922 | | |
8871 | 8923 | | |
| |||
0 commit comments