-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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: Delete old parameter ABI classification #112884
JIT: Delete old parameter ABI classification #112884
Conversation
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.
Copilot reviewed 17 out of 17 changed files in this pull request and generated no comments.
ABIPassingInformation abiInfo = m_classifier.Classify(comp, TYP_I_IMPL, nullptr, WellKnownArg::None); | ||
assert(abiInfo.NumSegments == 1); | ||
return ABIPassingInformation::FromSegment(comp, /* passedByRef */ true, abiInfo.Segment(0)); |
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 cause of the few diffs. This was wrong before and a few places (like promotions MapsToParameterRegister
) were not considering some parameters to be implicit byrefs because of it.
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.
Nice!
I'm just curious - would it be a lot of work to describe varargs for non-windows using this ABI classification? |
For reverse pinvoke I don't think anything has changed -- you need to do the classification at runtime. Although that classifier should already exist in the VM, so I'm not sure why that would be difficult. Perhaps the classifier does not exist for NAOT. For normal pinvoke it doesn't seem like it would be particularly difficult to support varargs calling convention in the few places where it differs from the standard calling convention. I think there is still a question of how varargs should be represented in signatures though (#48796). IOW, I don't think fixing #10478 would be all that difficult, but there is a question of usability without fixing #48796 as well. |
This is now fully replaced by new ABI classifiers.