Uh oh!
There was an error while loading. Please reload this page.
JIT: enable GDV when static class deduction fails. - #55660
Conversation
Update the early bailout in impDevirtualizeCall that gives up if the object class cannot not be determined to check if we can do GDV (guarded devirtualization) based on profile data. Fixes one of the cases noted in dotnet#55079.
AndyAyersMS
commented
Jul 14, 2021
@EgorBo PTAL On the second test case from #55079: and in the jitdump: |
SPMI only sees one method with a diff. There were quite a few replay failures (not surprising) so the actual set of diffs is perhaps considerably larger. Not sure how to assess this without merging this and getting a new collection, then undoing this. For the asp.net collection (~45K methods) there were ~1900 replay failures. Not currently easy to verify these are all caused by the above, but seems plausible. |
AndyAyersMS
commented
Jul 14, 2021
PMI diffs didn't spot anything either, but both diff and base jits failed in SPC where we probably have the most relevant PGO data. At any rate I think this change is clearly improved functionality and am not too worried about bad diffs. |
EgorBo
commented
Jul 14, 2021
Nice! I actually also tried to fix that via "get class handle for method" but didn't finish it |
AndyAyersMS
commented
Jul 14, 2021
@EgorBo you might try running this over TE, I think your scripting is better than mine. |
Sure, I've just started a couple of benchmarks to compare |
AndyAyersMS
commented
Jul 14, 2021
Not obvious how/if the installer test failure (Breadcrumb_thread_does_not_finish_when_app_has_unhandled_exception) is related. Suspect it isn't... |
AndyAyersMS
commented
Jul 15, 2021
Pretty sure failures are unrelated, have kicked off retries but CI doesn't seem to responding. Will look again in the morning. |
Update the early bailout in impDevirtualizeCall that gives up if
the object class cannot not be determined to check if we can do
GDV (guarded devirtualization) based on profile data.
Fixes one of the cases noted in #55079.