return;
}
- // CT_INDRECT calls may use the cookie, bail if so...
+ // CT_INDIRECT calls may use the cookie, bail if so...
//
// If transforming these provides a benefit, we could save this off in the same way
// we save the stub address below.
// thisTransform and constraint calls
// ----------------------------------
//
- // For evertyhing besides "constrained." calls "thisTransform" is set to
+ // For everything besides "constrained." calls "thisTransform" is set to
// CORINFO_NO_THIS_TRANSFORM.
//
// For "constrained." calls the EE attempts to resolve the call at compile
}
else
{
+ // At this point, we knew it is a virtual call to targetMethod method, if it is a default interface method call, it should go through instantiating stub
+ useInstantiatingStub = useInstantiatingStub || (targetMethod.OwningType.IsInterface && !originalMethod.IsAbstract);
// Insert explicit null checks for cross-version bubble non-interface calls.
// It is required to handle null checks properly for non-virtual <-> virtual change between versions
pResult->nullInstanceCheck = callVirtCrossingVersionBubble && !targetMethod.OwningType.IsInterface;