Fix desktop NGen break caused by CoreCLR change, and add a missing contract
authorJohn Chen <jochen@microsoft.com>
Fri, 3 Jun 2016 17:18:37 +0000 (10:18 -0700)
committerJohn Chen <jochen@microsoft.com>
Fri, 3 Jun 2016 17:18:37 +0000 (10:18 -0700)
[tfs-changeset: 1610323]

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

src/coreclr/src/vm/compile.h
src/coreclr/src/vm/genericdict.cpp

index 97c6cc1..c7a2d06 100644 (file)
@@ -531,6 +531,7 @@ class CEEPreloader : public ICorCompilePreloader
 
     void AppendUncompiledMethod(MethodDesc *pMD)
     {
+        STANDARD_VM_CONTRACT;
         if (m_methodCompileLimit > 0)
         {
             m_uncompiledMethods.Append(pMD);
index 65638d1..dfb9ea9 100644 (file)
@@ -682,7 +682,10 @@ Dictionary::PopulateEntry(
                 th = th.GetMethodTable()->GetMethodTableMatchingParentClass(declaringType.AsMethodTable());
             }
 
-            th.GetMethodTable()->EnsureInstanceActive();
+            if (!IsCompilationProcess())
+            {
+                th.GetMethodTable()->EnsureInstanceActive();
+            }
 
             result = (CORINFO_GENERIC_HANDLE)th.AsPtr();
             break;
@@ -917,7 +920,10 @@ Dictionary::PopulateEntry(
             DWORD fieldIndex;
             IfFailThrow(ptr.GetData(&fieldIndex));
 
-            th.AsMethodTable()->EnsureInstanceActive();
+            if (!IsCompilationProcess())
+            {
+                th.AsMethodTable()->EnsureInstanceActive();
+            }
 
             result = (CORINFO_GENERIC_HANDLE)th.AsMethodTable()->GetFieldDescByIndex(fieldIndex);
             break;