summaryrefslogtreecommitdiff
path: root/src/vm
diff options
context:
space:
mode:
authorDavid Wrighton <davidwr@microsoft.com>2019-11-22 13:26:57 -0800
committerGitHub <noreply@github.com>2019-11-22 13:26:57 -0800
commit016d9d67a7be81c68c6d870b7e7de31c4b4fb468 (patch)
tree79d697864f14f4744c5730c47da9a5828c5e0f3b /src/vm
parentff9dd56434c8b1a26f883d7994cff7c1de6a4798 (diff)
downloadcoreclr-016d9d67a7be81c68c6d870b7e7de31c4b4fb468.tar.gz
coreclr-016d9d67a7be81c68c6d870b7e7de31c4b4fb468.tar.bz2
coreclr-016d9d67a7be81c68c6d870b7e7de31c4b4fb468.zip
Non virtual calls to instance methods non-virtual dispatch on instance interface methods (#27756) (#27868)
* est for non_virtual_calls_to_instance_methods * Fix handling of callvirt to instance methods on interface types that are not virtual - Use call type to indicate if its non-virtual or not, instead of opcode * Use ilproj to protect against future C# compiler changes - This test needs to test the use of specific opcodes, and so an IL proj is required
Diffstat (limited to 'src/vm')
-rw-r--r--src/vm/jitinterface.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/vm/jitinterface.cpp b/src/vm/jitinterface.cpp
index 2bda507884..f1d41a266e 100644
--- a/src/vm/jitinterface.cpp
+++ b/src/vm/jitinterface.cpp
@@ -5772,7 +5772,7 @@ void CEEInfo::getCallInfo(
pResult->methodFlags = getMethodAttribsInternal(pResult->hMethod);
- SignatureKind signatureKind = flags & CORINFO_CALLINFO_CALLVIRT ? SK_VIRTUAL_CALLSITE : SK_CALLSITE;
+ SignatureKind signatureKind = flags & CORINFO_CALLINFO_CALLVIRT && !(pResult->kind == CORINFO_CALL) ? SK_VIRTUAL_CALLSITE : SK_CALLSITE;
getMethodSigInternal(pResult->hMethod, &pResult->sig, (pResult->hMethod == pResolvedToken->hMethod) ? pResolvedToken->hClass : NULL, signatureKind);
if (flags & CORINFO_CALLINFO_VERIFICATION)