-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix the EH-write thru scenario #45248
Conversation
@dotnet/jit-contrib |
Have you analyzed any of the diffs to see where they're coming from? I'm surprised that there would be so many diffs, and I'm wondering if there's some unexpected impact from setting the throw blocks as having an EH boundary out. |
Not really. That is on my TODO list before I merge the changes. |
Shouldn't we also check if the throw is within a try? |
So I performed some analysis on the regression. Majority of the regression we see comes because of add a condition for
Details
Details
I did some investigation on the cause of regression for method I picked a diff that was restoring the value from stack to From the JITdump, I tracked down the corresponding variable associated with the value showing diff and noticed that the value comes from V00
It turns out that V00 is an EH Var as seen below line in dump:
Next, I started looking at the "Allocating Registers" table to see the 1st diff related to V00 and saw this: Basically, After that, during resolution, we notice this diff where we add resolution code at the bottom of a block. I didn't debug completely why that might be happening but I am guessing it is because of the Similarly, I checked for other diffs like the one following: and they too occur because the corresponding RefPosition is marked as To summarize, the latest regression that we now see after fixing the case for |
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. It should now have zero diffs, right?
Yes. I already verified it has no diffs now with |
Fix the scenario for EH-Writethru case that was broken with my #44977 change. Below diffs compare the master (before my changes in #44977) vs. PR.
Code size diffs:
Perfscore diffs: