Commit ebcfbb8
committed
ZJIT: Drop has_blockiseq guard on local variable access
So `has_blockiseq` was masking two other bugs.
First, that we had only a static EP escape check for an iseq. We need to check
both that an iseq is not known to statically escape them *and that it has not
escaped them before*. Only then can we use SSA locals. This popped up in a
weird PP unit test that was reducible to the test cases added in the PR. So I
fixed that.
Second, that we didn't VM lock when code patching for EP escape. That showed up
in the Ractor btests in my previous PRs ruby#14600 and ruby#15254 ruby#15316, and I had no
idea what was going on at the time, so I dropped it. But if we add this lock,
like all the other invariant patching cases have, the problem goes away. Seems
reasonable.
Finally, we can use normal full SSA locals even in the presence of a blockiseq.
We still reload all of them after each send-with-block, but we can in a later
PR reduce that to just the locals that are (recursively) visibly written to.1 parent 3d00e34 commit ebcfbb8
3 files changed
+128
-40
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6087 | 6087 | | |
6088 | 6088 | | |
6089 | 6089 | | |
6090 | | - | |
6091 | 6090 | | |
6092 | 6091 | | |
6093 | 6092 | | |
6094 | 6093 | | |
6095 | 6094 | | |
6096 | 6095 | | |
6097 | | - | |
6098 | 6096 | | |
6099 | 6097 | | |
6100 | 6098 | | |
| |||
6118 | 6116 | | |
6119 | 6117 | | |
6120 | 6118 | | |
6121 | | - | |
6122 | | - | |
6123 | | - | |
6124 | | - | |
6125 | | - | |
6126 | | - | |
6127 | 6119 | | |
6128 | 6120 | | |
6129 | 6121 | | |
6130 | 6122 | | |
6131 | 6123 | | |
6132 | | - | |
| 6124 | + | |
6133 | 6125 | | |
6134 | 6126 | | |
6135 | 6127 | | |
| |||
6244 | 6236 | | |
6245 | 6237 | | |
6246 | 6238 | | |
6247 | | - | |
| 6239 | + | |
6248 | 6240 | | |
6249 | 6241 | | |
6250 | 6242 | | |
| |||
6276 | 6268 | | |
6277 | 6269 | | |
6278 | 6270 | | |
6279 | | - | |
| 6271 | + | |
| 6272 | + | |
| 6273 | + | |
| 6274 | + | |
| 6275 | + | |
6280 | 6276 | | |
6281 | 6277 | | |
6282 | 6278 | | |
| |||
6620 | 6616 | | |
6621 | 6617 | | |
6622 | 6618 | | |
6623 | | - | |
| 6619 | + | |
6624 | 6620 | | |
6625 | 6621 | | |
6626 | 6622 | | |
| |||
6743 | 6739 | | |
6744 | 6740 | | |
6745 | 6741 | | |
6746 | | - | |
| 6742 | + | |
6747 | 6743 | | |
6748 | 6744 | | |
6749 | 6745 | | |
| |||
6764 | 6760 | | |
6765 | 6761 | | |
6766 | 6762 | | |
6767 | | - | |
| 6763 | + | |
6768 | 6764 | | |
6769 | 6765 | | |
6770 | 6766 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2926 | 2926 | | |
2927 | 2927 | | |
2928 | 2928 | | |
2929 | | - | |
2930 | 2929 | | |
2931 | 2930 | | |
2932 | 2931 | | |
2933 | 2932 | | |
2934 | | - | |
2935 | | - | |
| 2933 | + | |
| 2934 | + | |
2936 | 2935 | | |
2937 | | - | |
| 2936 | + | |
2938 | 2937 | | |
2939 | 2938 | | |
2940 | 2939 | | |
| |||
3415 | 3414 | | |
3416 | 3415 | | |
3417 | 3416 | | |
3418 | | - | |
3419 | | - | |
| 3417 | + | |
3420 | 3418 | | |
3421 | | - | |
3422 | | - | |
3423 | | - | |
3424 | | - | |
| 3419 | + | |
| 3420 | + | |
| 3421 | + | |
| 3422 | + | |
3425 | 3423 | | |
3426 | | - | |
| 3424 | + | |
3427 | 3425 | | |
3428 | 3426 | | |
3429 | 3427 | | |
| |||
6523 | 6521 | | |
6524 | 6522 | | |
6525 | 6523 | | |
6526 | | - | |
6527 | 6524 | | |
6528 | 6525 | | |
6529 | 6526 | | |
| |||
6533 | 6530 | | |
6534 | 6531 | | |
6535 | 6532 | | |
6536 | | - | |
6537 | | - | |
| 6533 | + | |
| 6534 | + | |
6538 | 6535 | | |
6539 | | - | |
| 6536 | + | |
6540 | 6537 | | |
6541 | 6538 | | |
6542 | 6539 | | |
| |||
11887 | 11884 | | |
11888 | 11885 | | |
11889 | 11886 | | |
| 11887 | + | |
| 11888 | + | |
| 11889 | + | |
| 11890 | + | |
| 11891 | + | |
| 11892 | + | |
| 11893 | + | |
| 11894 | + | |
| 11895 | + | |
| 11896 | + | |
| 11897 | + | |
| 11898 | + | |
| 11899 | + | |
| 11900 | + | |
| 11901 | + | |
| 11902 | + | |
| 11903 | + | |
| 11904 | + | |
| 11905 | + | |
| 11906 | + | |
| 11907 | + | |
| 11908 | + | |
| 11909 | + | |
| 11910 | + | |
| 11911 | + | |
| 11912 | + | |
| 11913 | + | |
| 11914 | + | |
| 11915 | + | |
| 11916 | + | |
| 11917 | + | |
| 11918 | + | |
| 11919 | + | |
| 11920 | + | |
| 11921 | + | |
| 11922 | + | |
| 11923 | + | |
| 11924 | + | |
| 11925 | + | |
| 11926 | + | |
| 11927 | + | |
| 11928 | + | |
| 11929 | + | |
| 11930 | + | |
| 11931 | + | |
| 11932 | + | |
| 11933 | + | |
| 11934 | + | |
| 11935 | + | |
| 11936 | + | |
| 11937 | + | |
| 11938 | + | |
| 11939 | + | |
| 11940 | + | |
| 11941 | + | |
| 11942 | + | |
| 11943 | + | |
| 11944 | + | |
| 11945 | + | |
| 11946 | + | |
| 11947 | + | |
| 11948 | + | |
| 11949 | + | |
| 11950 | + | |
| 11951 | + | |
| 11952 | + | |
| 11953 | + | |
| 11954 | + | |
| 11955 | + | |
| 11956 | + | |
| 11957 | + | |
| 11958 | + | |
| 11959 | + | |
| 11960 | + | |
| 11961 | + | |
| 11962 | + | |
| 11963 | + | |
| 11964 | + | |
| 11965 | + | |
| 11966 | + | |
| 11967 | + | |
| 11968 | + | |
| 11969 | + | |
| 11970 | + | |
| 11971 | + | |
| 11972 | + | |
| 11973 | + | |
| 11974 | + | |
| 11975 | + | |
| 11976 | + | |
| 11977 | + | |
| 11978 | + | |
| 11979 | + | |
11890 | 11980 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
206 | 206 | | |
207 | 207 | | |
208 | 208 | | |
209 | | - | |
210 | | - | |
211 | | - | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
212 | 213 | | |
213 | | - | |
214 | | - | |
215 | | - | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
216 | 217 | | |
217 | | - | |
218 | | - | |
219 | | - | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
220 | 221 | | |
221 | | - | |
222 | | - | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
223 | 225 | | |
224 | 226 | | |
225 | 227 | | |
| |||
0 commit comments