Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Remove unnecessary runtime lookup for constrained callvirt
In my change adding support for default static virtual interface
method implementations I made a subtle bug that caused
behavioral change for some pre-existing constrained virtual calls
that newly started to require runtime lookup. This is unnecessary
and perf-negative, I have modified the code so that my change
kicks in only for static virtual methods.

Thanks

Tomas
  • Loading branch information
trylek committed Aug 23, 2022
commit ad2966134c941bb9be57ba7344177a02121d3b67
2 changes: 1 addition & 1 deletion src/coreclr/vm/jitinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4882,7 +4882,7 @@ void CEEInfo::getCallInfo(
MethodDesc * pTargetMD = pMDAfterConstraintResolution;
DWORD dwTargetMethodAttrs = pTargetMD->GetAttrs();

pResult->exactContextNeedsRuntimeLookup = (!constrainedType.IsNull() && constrainedType.IsCanonicalSubtype());
pResult->exactContextNeedsRuntimeLookup = (fIsStaticVirtualMethod && !fResolvedConstraint && !constrainedType.IsNull() && constrainedType.IsCanonicalSubtype());

if (pTargetMD->HasMethodInstantiation())
{
Expand Down