Commit 7683ab7
authored
ZJIT: Side-exit sends with blocks to non-block methods (ruby#16624)
When the caller passes a block to a method that either rejects blocks
(`&nil` parameter, `accepts_no_block`) or doesn't use them (`use_block`
is false), ZJIT now falls back to the interpreter instead of compiling
a direct send. This ensures:
1. Methods defined with `&nil` properly raise ArgumentError
2. Unused block warnings are properly emitted
Previously, ZJIT would compile these sends directly, skipping the
block validation and warning logic that the interpreter handles.1 parent 88efe89 commit 7683ab7
4 files changed
+62
-16
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5419 | 5419 | | |
5420 | 5420 | | |
5421 | 5421 | | |
| 5422 | + | |
| 5423 | + | |
| 5424 | + | |
| 5425 | + | |
| 5426 | + | |
| 5427 | + | |
| 5428 | + | |
| 5429 | + | |
| 5430 | + | |
| 5431 | + | |
| 5432 | + | |
| 5433 | + | |
| 5434 | + | |
| 5435 | + | |
| 5436 | + | |
| 5437 | + | |
| 5438 | + | |
| 5439 | + | |
| 5440 | + | |
| 5441 | + | |
| 5442 | + | |
| 5443 | + | |
| 5444 | + | |
| 5445 | + | |
| 5446 | + | |
| 5447 | + | |
| 5448 | + | |
| 5449 | + | |
| 5450 | + | |
| 5451 | + | |
| 5452 | + | |
| 5453 | + | |
| 5454 | + | |
| 5455 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2357 | 2357 | | |
2358 | 2358 | | |
2359 | 2359 | | |
2360 | | - | |
| 2360 | + | |
2361 | 2361 | | |
2362 | 2362 | | |
2363 | 2363 | | |
| |||
2376 | 2376 | | |
2377 | 2377 | | |
2378 | 2378 | | |
| 2379 | + | |
| 2380 | + | |
| 2381 | + | |
| 2382 | + | |
| 2383 | + | |
| 2384 | + | |
| 2385 | + | |
| 2386 | + | |
| 2387 | + | |
| 2388 | + | |
2379 | 2389 | | |
2380 | 2390 | | |
2381 | 2391 | | |
| |||
3723 | 3733 | | |
3724 | 3734 | | |
3725 | 3735 | | |
3726 | | - | |
| 3736 | + | |
3727 | 3737 | | |
3728 | 3738 | | |
3729 | 3739 | | |
| |||
3762 | 3772 | | |
3763 | 3773 | | |
3764 | 3774 | | |
3765 | | - | |
| 3775 | + | |
3766 | 3776 | | |
3767 | 3777 | | |
3768 | 3778 | | |
| |||
4135 | 4145 | | |
4136 | 4146 | | |
4137 | 4147 | | |
4138 | | - | |
| 4148 | + | |
4139 | 4149 | | |
4140 | 4150 | | |
4141 | 4151 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11433 | 11433 | | |
11434 | 11434 | | |
11435 | 11435 | | |
| 11436 | + | |
| 11437 | + | |
11436 | 11438 | | |
11437 | 11439 | | |
11438 | 11440 | | |
| |||
11452 | 11454 | | |
11453 | 11455 | | |
11454 | 11456 | | |
11455 | | - | |
11456 | | - | |
11457 | | - | |
| 11457 | + | |
11458 | 11458 | | |
11459 | | - | |
| 11459 | + | |
11460 | 11460 | | |
11461 | 11461 | | |
11462 | 11462 | | |
11463 | 11463 | | |
11464 | 11464 | | |
| 11465 | + | |
| 11466 | + | |
11465 | 11467 | | |
11466 | 11468 | | |
11467 | 11469 | | |
| |||
11481 | 11483 | | |
11482 | 11484 | | |
11483 | 11485 | | |
11484 | | - | |
11485 | | - | |
11486 | | - | |
| 11486 | + | |
11487 | 11487 | | |
11488 | | - | |
| 11488 | + | |
11489 | 11489 | | |
11490 | 11490 | | |
11491 | 11491 | | |
11492 | 11492 | | |
11493 | 11493 | | |
| 11494 | + | |
| 11495 | + | |
11494 | 11496 | | |
11495 | 11497 | | |
11496 | 11498 | | |
| |||
11510 | 11512 | | |
11511 | 11513 | | |
11512 | 11514 | | |
11513 | | - | |
11514 | | - | |
11515 | | - | |
| 11515 | + | |
11516 | 11516 | | |
11517 | | - | |
| 11517 | + | |
11518 | 11518 | | |
11519 | 11519 | | |
11520 | 11520 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
| 427 | + | |
| 428 | + | |
427 | 429 | | |
428 | 430 | | |
429 | 431 | | |
| |||
0 commit comments