-
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
NativeAOT: Guarded devirtualization #64497
Merged
Merged
Changes from 30 commits
Commits
Show all changes
40 commits
Select commit
Hold shift + click to select a range
17c3b8c
Initial implementation
EgorBo e0a25e0
basic getExactClasses impl
EgorBo ad64be3
Merge branch 'main' of https://github.com/dotnet/runtime into gdv-nat…
EgorBo 9643359
fix merge conflicts
EgorBo 10ed069
fix merge conflicts
EgorBo 84b0b50
fix merge conflicts
EgorBo ee67913
fix merge conflicts
EgorBo 07f053e
Implement GetImplementingClasses
EgorBo 29c0f93
Merge branch 'main' of https://github.com/dotnet/runtime into gdv-nat…
EgorBo ec97ddb
Make checks more conservative
EgorBo 0685c07
Another attempt
EgorBo 1439bcc
Merge branch 'main' of github.com:dotnet/runtime into gdv-nativeaot
EgorBo cda167d
update guid
EgorBo 527b302
Merge branch 'main' of github.com:dotnet/runtime into gdv-nativeaot
EgorBo 0e8adab
Fix importer logic
EgorBo a1617c6
Update importer.cpp
EgorBo 9ada528
Merge branch 'main' of github.com:dotnet/runtime into gdv-nativeaot
EgorBo 46f84a5
Don't use GDV
EgorBo f87300f
Clean up
EgorBo cd4aa36
Refactoring
EgorBo d9721c0
Clean up
EgorBo b492373
Update importer.cpp
EgorBo d83f514
Make things more conservative
MichalStrehovsky be28832
Clean up
EgorBo 1359e43
Merge branch 'gdv-nativeaot' of github.com:EgorBo/runtime-1 into gdv-…
EgorBo a73bdef
Clean up
EgorBo 90b8bfa
Clean up
EgorBo e76b472
IDynamicInterfaceCastable and template type loader cases
MichalStrehovsky c30f1ee
Address feedback
EgorBo 497b843
ignore types which require runtime lookup
EgorBo 19d6690
Merge branch 'main' into gdv-nativeaot
EgorBo e19f094
Merge branch 'main' of github.com:dotnet/runtime into gdv-nativeaot
EgorBo 7559015
address feedback
EgorBo e4eca63
fix build
EgorBo cb74fc9
Merge branch 'main' into gdv-nativeaot
MichalStrehovsky d170052
Restore old logic
MichalStrehovsky 6bf87db
One more lost diff
MichalStrehovsky 6728e6a
Merge branch 'main' of github.com:dotnet/runtime into gdv-nativeaot
EgorBo 6cd67e6
add JitEnableExactDevirtualization
EgorBo 292d1d8
fix build
EgorBo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Is there a meaningful perf saving from skipping getExactClasses call outside NATIVEAOT_ABI? I assume it would just be a no-op. Not doing this outside NativeAOT is a policy decision and JIT generally tries to leave those to the EE side.
Could we instead key this off of JitEnableDevirtualization (or maybe a new config switch specifically for this)? Just so we have some way to see the impact of this or disable it if it misbehaves. On ilc side we have
--noscan
that would disable this, but it also disables a bunch of other things because it's for the whole program analysis in general.