-
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: arm64 osr funclet frame probing #70916
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsWe currently need to pad OSR funclet frames with the full size of the Longer term the plan is to revise arm64 OSR so we will not need to Fixes #70263.
|
@BruceForstall PTAL |
Can you show what the funclet prolog from #70263 (comment) looks like with this change? |
What about the |
"Frame type 5" is already quite broken, see #66089. |
Old/new prologs
|
/azp run runtime-coreclr superpmi-diffs |
/azp run runtime-coreclr superpmi-replay |
Azure Pipelines successfully started running 1 pipeline(s). |
1 similar comment
Azure Pipelines successfully started running 1 pipeline(s). |
caught up in the guid change |
Libraries failure looks like a gc hole perhaps:
This is on x64 -- this PR only changes arm64 codegen, so expect this is unrelated. |
|
/azp run runtime-coreclr superpmi-diffs, runtime-coreclr superpmi-replay |
Azure Pipelines successfully started running 2 pipeline(s). |
You should rebase after #70922, and I think you need the same change for fiFrameType=5. |
Ok. You don't mind that I am repurposing I really need to revise arm64 to not need this crazy funclet padding, but it feels a bit risky to try doing that now. |
It seems ok, since |
We currently need to pad OSR funclet frames with the full size of the Tier0 frame, and this paddign sits above the register save area. For large Tier0 frames we thus need to probe the stack in the OSR prolog for type1 and type3 frames, before doing the initial SP adjustment and save. Longer term the plan is to revise arm64 OSR so we will not need to do this padding; at that point we can remove this extra probing. Fixes dotnet#70263.
/azp run runtime-jit-experimental |
Azure Pipelines successfully started running 1 pipeline(s). |
Failure looks like #69474 |
Jit-experimental was clean other than an OSX timeout. Other parts of this pipeline run the Github_21990 test case under OSR stress, and it's been consistently failing there on arm64 for a long time. |
We currently need to pad OSR funclet frames with the full size of the
Tier0 frame, and this padding sits above the register save area. For
large Tier0 frames we thus need to probe the stack in the OSR prolog
for type1 and type3 frames, before doing the initial SP adjustment and
save.
Longer term the plan is to revise arm64 OSR so we will not need to
do this padding; at that point we can remove this extra probing.
Fixes #70263.