-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Add support for no GC regions in x86 GC info #115602
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
Conversation
cc @dotnet/dotnet-diag If this gets approved the shared files for GC info parsing and dumping will need to be synced to the dotnet/diagnostics repo. |
{ | ||
// TODO-Linux-x86: Do we need to handle the GC information for this NOP or JMP specially, as is done for other | ||
// architectures? | ||
#ifndef JIT32_GCENCODER |
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.
^ This is the primary issue addressed by this PR
This reverts commit c2b328a.
/azp run runtime-coreclr gcstress0x3-gcstress0xc |
Azure Pipelines successfully started running 1 pipeline(s). |
I don't expect this to reveal anything. It's now a strictly zero-diff change with x86 funclets disabled. May be worth running the same check on #113576 which has essentially the same commit applied with x86 funclets enabled (- the disabled cpObj optimization). (In fact, give me a sec, I'll push the exact same change there... and DONE.) |
Right, I just want to make sure that there is nothing subtle broken in the x86 GC encoder/decoder. |
I've taken a pass through this and it looks good, although I haven't looked at the test failures to see if they are related. |
The osx failure is unrelated. I will check the GC stress failures tomorrow. I believe I have previously seen them and there's one issue filed for x86 unwinding (broken by async2 codegen change using a slightly different pattern in few epilogs). |
The two x86 GC stress failures are indeed instances of #115120. |
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.
Thank you
/ba-g intermittent nuget restore failure in unrelated leg |
Could you please send matching update PR to the diagnostics repo? |
Of course. |
Contributes to #113985
#113985 (comment) identified an issue where GC info is not correctly recorded for inline jumps to finally blocks. It shows up in GC stress testing. This issue already exists on NativeAOT on win-x86 but we didn't have sufficient coverage to identify it.
For fully interruptible methods we can now encode a table in the x86 GC info that describes the no-GC regions as pair of (offset, size) tuples. The presence of the table is indicated by a new header opcode (
SET_NOGCREGIONS_CNT + count
forcount >= 0 && count <= 4
orFFFF_NOGCREGION_CNT
and extra count field after the header).