Skip to content
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

Stop treating all calls to instance interface methods as callvirt #15925

Merged
merged 2 commits into from Jan 19, 2018

Conversation

@MichalStrehovsky
Copy link
Member

MichalStrehovsky commented Jan 19, 2018

Fixes #15827.

I made the test check for DefaultImplementationsOfInterfaces RuntimeFeature so that we don't need to go and disable it in the release branches.

@MichalStrehovsky

This comment has been minimized.

Copy link
Member Author

MichalStrehovsky commented Jan 19, 2018

@jkotas PTAL

Cc @sergiy-k

@MichalStrehovsky MichalStrehovsky added this to TODO in Default Interface Methods via automation Jan 19, 2018
@@ -5397,7 +5397,8 @@ void CEEInfo::getCallInfo(
directCall = true;
}
else
if (pTargetMD->GetMethodTable()->IsInterface() && pTargetMD->IsVirtual())
// Backwards compat: calls to abstract interface methods are treated as callvirt
if (pTargetMD->IsAbstract() && pTargetMD->GetMethodTable()->IsInterface())

This comment has been minimized.

Copy link
@jkotas

jkotas Jan 19, 2018

Member

IsAbstract is relatively expensive in CoreCLR. Could you please keep the IsInterface check first?

@jkotas
jkotas approved these changes Jan 19, 2018
@jkotas jkotas merged commit e83991c into dotnet:master Jan 19, 2018
14 of 16 checks passed
14 of 16 checks passed
Tizen armel Cross Checked Innerloop Build and Test Started.
Details
Ubuntu arm Cross Debug Innerloop Build Started.
Details
Alpine.3.6 x64 Debug Build Build finished.
Details
CROSS Check Build finished.
Details
CentOS7.1 x64 Checked Innerloop Build and Test Build finished.
Details
CentOS7.1 x64 Debug Innerloop Build Build finished.
Details
OSX10.12 x64 Checked Innerloop Build and Test Build finished.
Details
Ubuntu arm64 Cross Debug Innerloop Build Build finished.
Details
Ubuntu x64 Checked Innerloop Build and Test Build finished.
Details
Ubuntu x64 Innerloop Formatting Build finished.
Details
Ubuntu16.04 arm Cross Debug Innerloop Build Build finished.
Details
WIP ready for review
Details
Windows_NT x64 Checked Innerloop Build and Test Build finished.
Details
Windows_NT x64 Innerloop Formatting Build finished.
Details
Windows_NT x86 Checked Innerloop Build and Test Build finished.
Details
license/cla All CLA requirements met.
Details
Default Interface Methods automation moved this from TODO to Done Jan 19, 2018
@MichalStrehovsky MichalStrehovsky deleted the MichalStrehovsky:fix15827 branch Jan 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Linked issues

Successfully merging this pull request may close these issues.

None yet

2 participants
You can’t perform that action at this time.