This repository was archived by the owner on Jan 23, 2023. It is now read-only.
Commit a764455
authored
JIT: improve return types in cases with spill temps (#15766)
If the jit sees that an inlinee has multiple return sites or has gc ref locals
it will choose to return the inline result via a temp. The jit was not assigning
a type to that temp and so losing track of some type information.
So, for inlinees returning ref types, initially type the return spill temp with
the declared return type of the method.
When importing we may discover that particular return sites will return more
specific types. If all discovered return sites agree, we can update the return
type for the spill temp to match the consensus improved type.
This can lead to removal of some type checks and also to devirtualization.
Addresses issues discussed in #9908 and #15743.1 parent d36b8e1 commit a764455
File tree
6 files changed
+201
-9
lines changed- src/jit
- tests/src/JIT/opt/Devirtualization
6 files changed
+201
-9
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4573 | 4573 | | |
4574 | 4574 | | |
4575 | 4575 | | |
| 4576 | + | |
| 4577 | + | |
| 4578 | + | |
| 4579 | + | |
| 4580 | + | |
| 4581 | + | |
| 4582 | + | |
| 4583 | + | |
| 4584 | + | |
| 4585 | + | |
| 4586 | + | |
4576 | 4587 | | |
4577 | 4588 | | |
4578 | 4589 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5929 | 5929 | | |
5930 | 5930 | | |
5931 | 5931 | | |
| 5932 | + | |
| 5933 | + | |
| 5934 | + | |
| 5935 | + | |
| 5936 | + | |
| 5937 | + | |
| 5938 | + | |
| 5939 | + | |
| 5940 | + | |
| 5941 | + | |
| 5942 | + | |
| 5943 | + | |
5932 | 5944 | | |
5933 | 5945 | | |
5934 | 5946 | | |
| |||
22441 | 22453 | | |
22442 | 22454 | | |
22443 | 22455 | | |
22444 | | - | |
22445 | | - | |
22446 | | - | |
22447 | | - | |
22448 | | - | |
22449 | | - | |
22450 | | - | |
| 22456 | + | |
| 22457 | + | |
| 22458 | + | |
| 22459 | + | |
| 22460 | + | |
| 22461 | + | |
| 22462 | + | |
| 22463 | + | |
| 22464 | + | |
22451 | 22465 | | |
22452 | 22466 | | |
22453 | 22467 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
15838 | 15839 | | |
15839 | 15840 | | |
15840 | 15841 | | |
| 15842 | + | |
| 15843 | + | |
| 15844 | + | |
| 15845 | + | |
| 15846 | + | |
| 15847 | + | |
| 15848 | + | |
| 15849 | + | |
| 15850 | + | |
| 15851 | + | |
| 15852 | + | |
| 15853 | + | |
| 15854 | + | |
| 15855 | + | |
| 15856 | + | |
| 15857 | + | |
| 15858 | + | |
| 15859 | + | |
| 15860 | + | |
| 15861 | + | |
| 15862 | + | |
| 15863 | + | |
| 15864 | + | |
| 15865 | + | |
| 15866 | + | |
15841 | 15867 | | |
15842 | 15868 | | |
15843 | 15869 | | |
| |||
15881 | 15907 | | |
15882 | 15908 | | |
15883 | 15909 | | |
15884 | | - | |
| 15910 | + | |
15885 | 15911 | | |
15886 | 15912 | | |
15887 | 15913 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
562 | 562 | | |
563 | 563 | | |
564 | 564 | | |
565 | | - | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
566 | 568 | | |
567 | 569 | | |
568 | 570 | | |
| |||
| 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 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 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 | + | |
0 commit comments