-
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
JIT: handle large OSR funclet frame initial SP delta for arm64 type 5… #66124
Conversation
… frame Because OSR funclet frames must pad with Tier0 frame size, initial SP delta may exceed 240 bytes. Fixes dotnet#65996.
Tagging subscribers to this area: @JulieLeeMSFT Issue Details… frame Because OSR funclet frames must pad with Tier0 frame size, initial SP delta Fixes #65996.
|
@BruceForstall PTAL |
$(CLRTestBatchPreCommands) | ||
set COMPlus_TieredCompilation=1 | ||
set COMPlus_TC_QuickJitForLoops=1 | ||
set COMPlus_TC_OnStackReplacement=1 | ||
set COMPlus_OSR_HitLimit=2 | ||
set COMPlus_JitRandomOnStackReplacement=15 | ||
set COMPlus_JitStress=2 | ||
]]></CLRTestBatchPreCommands> | ||
<BashCLRTestPreCommands><![CDATA[ | ||
$(BashCLRTestPreCommands) | ||
export COMPlus_TieredCompilation=1 | ||
export COMPlus_TC_QuickJitForLoops=1 | ||
export COMPlus_TC_OnStackReplacement=1 | ||
export COMPlus_OSR_HitLimit=2 | ||
export COMPlus_JitRandomOnStackReplacement=15 | ||
export COMPlus_JitStress=2 | ||
]]></BashCLRTestPreCommands> |
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.
Is this going to be the first Pri-0 OSR test case?
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.
All the tests in this directory are OSR tests. This will be the first that relies on "Random" OSR and aggressive OSR transitions. Normally those are only tested in the experimental CI legs.
I could probably rewrite the test to trigger with default OSR settings, if you think that's preferable.
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.
Hmmm, "random" doesn't seem great in terms of repeatability? But if the seed is the method hash, then it's not actually random? Seems ok.
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.
You may want to double check the funclet prolog generation as well. It does not read fiSpDelta1
anywhere for frame type 5 which does not seem right.
Thanks -- I will check. |
Yeah, it seems wrong. For the main method this bit of SP adjust happens in the Tier0 frame, but for funclets it has to happen in the funclet prolog, and type 5 frames are missing this bit. |
Turns out (because of patchpoint info skew when cross-jitting) that running natively on arm64 we don't generate a type 5 frame. So probably need to find a better test case, but for now this is better than nothing. |
Trying to cleanly restart the SPMI jobs. |
/azp run runtime-coreclr superpmi-replay |
/azp run runtime-coreclr superpmi-asmdiffs |
Azure Pipelines successfully started running 1 pipeline(s). |
1 similar comment
Azure Pipelines successfully started running 1 pipeline(s). |
Failures seem to be known issues. |
dotnet#66124) Because OSR funclet frames must pad with Tier0 frame size, initial SP delta may exceed 240 bytes. Fixes dotnet#65996.
… frame
Because OSR funclet frames must pad with Tier0 frame size, initial SP delta
may exceed 240 bytes.
Fixes #65996.