Commit d933222
[release/7.0] [mono][interp] Fix an issue with deopt and interpreter tiering. (#77059)
* [mono][interp] Fix an issue with deopt and interpreter tiering.
If a method is tiered while being run from interp_run_clause_with_il_state (),
the clause_args argument to interp_exec_method () still contains the old IL
offsets confusing the EH code, i.e. this line:
```
if (clause_args && frame == clause_args->exec_frame && context->handler_ip >= clause_args->end_at_ip)
```
Clear out clause_args at the beginning to avoid this.
Hopefully fixes
#76134
#74302
* [mono][interp] Avoid tiering up methods while running clauses.
The IL offsets in the clause_args argument become out-of-date after tiering up.
Co-authored-by: Zoltan Varga <[email protected]>1 parent 00816bf commit d933222
1 file changed
+16
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
| 97 | + | |
97 | 98 | | |
98 | 99 | | |
99 | 100 | | |
| |||
3595 | 3596 | | |
3596 | 3597 | | |
3597 | 3598 | | |
| 3599 | + | |
| 3600 | + | |
| 3601 | + | |
| 3602 | + | |
| 3603 | + | |
| 3604 | + | |
| 3605 | + | |
3598 | 3606 | | |
3599 | 3607 | | |
3600 | 3608 | | |
| |||
7067 | 7075 | | |
7068 | 7076 | | |
7069 | 7077 | | |
7070 | | - | |
| 7078 | + | |
7071 | 7079 | | |
7072 | 7080 | | |
7073 | 7081 | | |
7074 | 7082 | | |
7075 | 7083 | | |
7076 | 7084 | | |
7077 | 7085 | | |
7078 | | - | |
| 7086 | + | |
7079 | 7087 | | |
7080 | 7088 | | |
7081 | 7089 | | |
| |||
7656 | 7664 | | |
7657 | 7665 | | |
7658 | 7666 | | |
7659 | | - | |
7660 | | - | |
7661 | | - | |
| 7667 | + | |
| 7668 | + | |
| 7669 | + | |
| 7670 | + | |
| 7671 | + | |
7662 | 7672 | | |
| 7673 | + | |
7663 | 7674 | | |
7664 | 7675 | | |
7665 | 7676 | | |
| |||
0 commit comments