Commit c6af44d
authored
[clr-interp] Add logic to fix tail-call issues (#122618)
- Detect the case where tail calls are not immediately followed by ret,
and fail the tail-call.
- Detect the attempted usage of tail-calls from within synchronized
methods or from within reverse p/invoke methods
- Use the jit interface canTailCall api when a tail-call is requested
- Enable tail-calls for calli instructions
Update the TailcallVerifyWithPrefix test to skip tests which depend on
the jit performing implicit tail-calls when optimizing when running
under the interpreter
This fixes the TailcallVerifyWithPrefix and more_tailcalls test1 parent 25fc25e commit c6af44d
File tree
4 files changed
+50
-3
lines changed- src
- coreclr/interpreter
- tests/JIT/opt/Tailcall
4 files changed
+50
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4004 | 4004 | | |
4005 | 4005 | | |
4006 | 4006 | | |
4007 | | - | |
| 4007 | + | |
4008 | 4008 | | |
4009 | 4009 | | |
4010 | 4010 | | |
| |||
4024 | 4024 | | |
4025 | 4025 | | |
4026 | 4026 | | |
| 4027 | + | |
| 4028 | + | |
| 4029 | + | |
| 4030 | + | |
| 4031 | + | |
| 4032 | + | |
| 4033 | + | |
| 4034 | + | |
| 4035 | + | |
| 4036 | + | |
4027 | 4037 | | |
4028 | 4038 | | |
4029 | 4039 | | |
| |||
4488 | 4498 | | |
4489 | 4499 | | |
4490 | 4500 | | |
4491 | | - | |
| 4501 | + | |
| 4502 | + | |
| 4503 | + | |
| 4504 | + | |
| 4505 | + | |
| 4506 | + | |
| 4507 | + | |
| 4508 | + | |
4492 | 4509 | | |
4493 | 4510 | | |
4494 | 4511 | | |
| |||
9043 | 9060 | | |
9044 | 9061 | | |
9045 | 9062 | | |
9046 | | - | |
| 9063 | + | |
9047 | 9064 | | |
9048 | 9065 | | |
9049 | 9066 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
872 | 872 | | |
873 | 873 | | |
874 | 874 | | |
| 875 | + | |
875 | 876 | | |
876 | 877 | | |
877 | 878 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
31 | 35 | | |
32 | 36 | | |
33 | 37 | | |
| |||
3341 | 3345 | | |
3342 | 3346 | | |
3343 | 3347 | | |
| 3348 | + | |
| 3349 | + | |
| 3350 | + | |
| 3351 | + | |
| 3352 | + | |
| 3353 | + | |
| 3354 | + | |
| 3355 | + | |
3344 | 3356 | | |
3345 | 3357 | | |
3346 | 3358 | | |
| |||
3457 | 3469 | | |
3458 | 3470 | | |
3459 | 3471 | | |
| 3472 | + | |
| 3473 | + | |
| 3474 | + | |
| 3475 | + | |
| 3476 | + | |
| 3477 | + | |
| 3478 | + | |
| 3479 | + | |
3460 | 3480 | | |
3461 | 3481 | | |
3462 | 3482 | | |
| |||
3536 | 3556 | | |
3537 | 3557 | | |
3538 | 3558 | | |
| 3559 | + | |
| 3560 | + | |
| 3561 | + | |
| 3562 | + | |
| 3563 | + | |
| 3564 | + | |
| 3565 | + | |
| 3566 | + | |
3539 | 3567 | | |
3540 | 3568 | | |
3541 | 3569 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
18 | 19 | | |
19 | 20 | | |
0 commit comments