JIT: Delete old parameter ABI classification#112884
Conversation
| 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.
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.
|
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.