-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
Mark static boxes as invariant #62298
Mark static boxes as invariant #62298
Conversation
This will be needed to make the upcoming changes to how we parse the field sequences for boxed statics zero-diff. It also happens to be a CQ improvement on its own.
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsThis will be needed to make the upcoming changes to how we parse the field sequences for boxed statics zero-diff - I need the box indirections to become invariant passthrough functions of their addresses. It also happens to be a CQ improvement on its own... ...most of the time. Sometimes, CSE gets into an unfortunate position of not helping the RA a lot, and we end up with significant size regressions. Fortunately, those seems to be limited to R2R code and so are unlikely to show up on the performance radar, and in terms of PerfScore are not actually that bad (the worst one from the Win-x64 CG2 collection is a 13% PerfScore regression). Win-x64 diffsaspnet.run.windows.x64.checked.mch:
Detail diffs
benchmarks.run.windows.x64.checked.mch:
Detail diffs
coreclr_tests.pmi.windows.x64.checked.mch:
Detail diffs
libraries.crossgen2.windows.x64.checked.mch:
Detail diffs
libraries.pmi.windows.x64.checked.mch:
Detail diffs
libraries_tests.pmi.windows.x64.checked.mch:
Detail diffs
|
@dotnet/jit-contrib |
@SingleAccretion Thanks! |
This will be needed to make the upcoming changes to how we parse the field sequences for boxed statics zero-diff - I need the box indirections to become invariant passthrough functions of their addresses.
It also happens to be a CQ improvement on its own...
...most of the time. Sometimes, CSE gets into an unfortunate position of not helping the RA a lot, and we end up with significant size regressions. Fortunately, those seems to be limited to R2R code and so are unlikely to show up on the performance radar, and in terms of PerfScore are not actually that bad (the worst one from the Win-x64 CG2 collection is a 13% PerfScore regression).
All the regressions I've looked at are because we now see CSEs live across calls, and that is not handled well. Those calls are most commonly the
GETSHARED_SOME_BASE
ones, attached to these statics.Win-x64 diffs
aspnet.run.windows.x64.checked.mch:
Detail diffs
benchmarks.run.windows.x64.checked.mch:
Detail diffs
coreclr_tests.pmi.windows.x64.checked.mch:
Detail diffs
libraries.crossgen2.windows.x64.checked.mch:
Detail diffs
libraries.pmi.windows.x64.checked.mch:
Detail diffs
libraries_tests.pmi.windows.x64.checked.mch:
Detail diffs
I have also checked diffs with CSE disabled, there were just a few, arising from propagating the non-nullness of the boxed static's address.
Part of #58312.
Full diffs.