-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
JIT: OSR jitstress fixes; enable struct promotion #65903
JIT: OSR jitstress fixes; enable struct promotion #65903
Conversation
Fix OSR jitstress failures by disabling STRESS_LCL_FLD for two cases: * for Tier0 methods with patchpoints (because patchpoint info generation does not produce the right offsets when locals are padded) * for OSR locals in OSR methods (because they live on the Tier0 frame and so can't have their storage altered. Enable struct promotion for OSR locals. In most cases this ends up being dependent promotion. Enabling independent promotion will take more work.
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsFix OSR jitstress failures by disabling STRESS_LCL_FLD for two cases:
Enable struct promotion for OSR locals. In most cases this ends up being
|
@BruceForstall PTAL Expect diffs in asp.net for OSR methods (if the current collection is viable). If not I will post my local diffs. This fixes the ~20% regression seen in See #33658 (comment) and subsequent comments for context. |
Jitstress OSR fixes were validated over in #65675 (though it is hard to tell given the CI issues in the last testing cycle). I can't easily run jitstress + OSR on this PR, but will run OSR stress. |
/azp run runtime-jit-experimental |
Azure Pipelines successfully started running 1 pipeline(s). |
Co-authored-by: Bruce Forstall <[email protected]>
/azp run runtime-jit-experimental |
Azure Pipelines successfully started running 1 pipeline(s). |
Opened #65914 for the asserts seen in |
Don't see any asp.net diffs from the spmi job. Here's what I saw locally.
There are around 1350 OSR methods in this collection, so about 10% were impacted. |
Some pre-existing stress failures in |
FYI the failure in G_M57283_IG13: ;; offset=00ECH
D2939C09 mov x9, #0x9ce0
CB2963FF sub sp, sp, x9
A9007BFD stp fp, lr, [sp] ** blows up here **
A90253F3 stp x19, x20, [sp,#32]
D2939C02 mov x2, #0x9ce0
8B0203A3 add x3, fp, x2
F9000FE3 str x3, [sp,#24]
;; bbWeight=0 PerfScore 0.00
G_M57283_IG14: ;; offset=0108H
10FFFE60 adr x0, [G_M57283_IG11]
;; bbWeight=0 PerfScore 0.00
G_M57283_IG15: ;; offset=010CH
A94253F3 ldp x19, x20, [sp,#32]
A9407BFD ldp fp, lr, [sp]
D2939C09 mov x9, #0x9ce0
8B2963FF add sp, sp, x9
D65F03C0 ret lr |
This undoes part of dotnet#65903. OSR methods can't rely solely on their own analysis for struct promotion as they only see parts of methods.
This undoes part of #65903. OSR methods can't rely solely on their own analysis for struct promotion as they only see parts of methods.
Fix OSR jitstress failures by disabling STRESS_LCL_FLD for two cases:
does not produce the right offsets when locals are padded)
so can't have their storage altered.
Enable struct promotion for OSR locals. In most cases this ends up being
dependent promotion. Enabling independent promotion will take more work.