Add module override for constraint type in method
authorJan Vorlicek <janvorli@microsoft.com>
Fri, 10 May 2019 15:59:04 +0000 (17:59 +0200)
committerJan Vorlicek <janvorli@microsoft.com>
Fri, 10 May 2019 15:59:04 +0000 (17:59 +0200)
The constraint type for method signature encoding was missing module
zapsig when it was needed.

Commit migrated from https://github.com/dotnet/coreclr/commit/c349128fa2244f74d16576088f9ef834c8b6a581

src/coreclr/src/vm/zapsig.cpp

index 8feb7be..94be72a 100644 (file)
@@ -1426,6 +1426,14 @@ BOOL ZapSig::EncodeMethod(
         if (fEncodeUsingResolvedTokenSpecStreams && pConstrainedResolvedToken->pTypeSpec != NULL)
         {
             _ASSERTE(pConstrainedResolvedToken->cbTypeSpec > 0);
+
+            if (IsReadyToRunCompilation() && pMethod->GetModule()->IsInCurrentVersionBubble() && pInfoModule != (Module *) pConstrainedResolvedToken->tokenScope)
+            {
+                pSigBuilder->AppendElementType((CorElementType)ELEMENT_TYPE_MODULE_ZAPSIG);
+                DWORD index = (*((EncodeModuleCallback)pfnEncodeModule))(pEncodeModuleContext, (Module *) pConstrainedResolvedToken->tokenScope);
+                pSigBuilder->AppendData(index);
+            }
+
             pSigBuilder->AppendBlob((PVOID)pConstrainedResolvedToken->pTypeSpec, pConstrainedResolvedToken->cbTypeSpec);
         }
         else