- Notifications
You must be signed in to change notification settings - Fork5.3k
JIT: give inlinees their own EH table#112968
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
For a long time now inlinees have "inherited" the root method EH table. Looks likethe only reason we were doing this was to make certain pinvoke inlining checks simpler.Rework those to handle the inline case directly. Quirk one bit of profitability logicfor now to avoid diffs.Part ofdotnet#108900.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
Tagging subscribers to this area:@JulieLeeMSFT,@jakobbotsch |
AndyAyersMS commentedFeb 26, 2025
@EgorBo@BruceForstall PTAL No diffs; doesn't enable any new behavior. |
EgorBo left a comment• edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
LGTM if CI is happy, I think last time I tried, I hit some assert in VM API but most likely that was my incorrect change
AndyAyersMS commentedFeb 26, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There are VM-side changes needed to enable inlining methods with EH. Those will show up in a follow-up PR. |
AndyAyersMS commentedFeb 26, 2025
Sneak preview of the above (not quite working yet, thanks in part to the confusion I'm fixing here) usingSystem.Runtime.CompilerServices;Bar();[MethodImpl(MethodImplOptions.AggressiveInlining)]voidBar(){try{Console.WriteLine("Bar");}finally{Console.WriteLine("Bar finally");}} |
AndyAyersMS commentedFeb 27, 2025
Need to tweak the logic for NAOT. |
b54529f intodotnet:mainUh oh!
There was an error while loading.Please reload this page.
For a long time now inlinees have "inherited" the root method EH table. Looks like the only reason we were doing this was to make certain pinvoke inlining checks simpler.
Rework those to handle the inline case directly. Quirk one bit of profitability logic for now to avoid diffs.
Part of#108900.