-
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: Allow hot/cold splitting between a BBJ_COND
block and its false target
#96431
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsNext step for #93020. When doing hot/cold splitting, if the first cold block succeeds a
|
/azp run runtime-coreclr crossgen2 |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-coreclr crossgen2 |
Azure Pipelines successfully started running 1 pipeline(s). |
cc @dotnet/jit-contrib. No diffs, but a slight TP impact. SPMI failures don't seem to be related. Hot/Cold splitting tests passed in |
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.
Regarding no diffs: I don't believe we have any hot/cold splitting in any of the SPMI collections. We probably should.
Would that just entail enabling "fake" hot/cold splitting (e.g. |
That might be sufficient. Or maybe some crossgen2 + real splitting for some assemblies? |
Ah, I just remembered that fake splitting also "fakes" the unwind info by treating the whole method as hot, so turning on real splitting for some crossgen'd assemblies might be more interesting/useful. |
Next step for #93020. When doing hot/cold splitting, if the first cold block succeeds a
BBJ_COND
block (meaning the false target is the first cold block), we previously needed to insert aBBJ_ALWAYS
block at the end of the hot section to unconditionally jump to the cold section. Since we will need to conditionally generate a jump to the false target depending on its location oncebbFalseTarget
can diverge frombbNext
, this seemed like a nice opportunity to add that logic in, and instead generate a jump to the cold section by checking if a jump is needed to the false target, rather than by appending aBBJ_ALWAYS
block to the hot section.