-
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
Ensure that Vector<T> is tracked as "optimistic" for crossgen2 #87240
Conversation
This brings the number of jitted methods for a
|
An example of the Before:
After:
|
Note that before #85551 the number of jitted methods for
These two methods are no longer being used for AOT because they do in fact use These code paths are only being kept around for |
#85916 has been pending to delete those fallbacks entirely. To move things along, I could update it to instead ifdef them to just be for mono. |
This resolves #87235
The issue was introduced in #85551 as the
InstructionSet_VectorT###
was included as part of thesupportedInstructionSet
and was therefore getting encoded as part of the required ISAs for a given image.What this meant was that when we hit
TryIncrementalLoad
forSystem.Private.Corelib
we'd try to apply theEagerFixups
, find that the host machine supportedInstructionSet_VectorT256
while the image said it requiredInstructionSet_VectorT128
. This caused the entire image to be thrown away as invalid.By instead tracking the
Vector<T>
size that's being targeted as the opportunistic set, we get the dependency flagged per method alongside any layout check required forVector<T>
. This allows just the method in question to be thrown away instead.