Fix DelayLoadHelper kind for delegate ctors and IsInstanceOf (#1302)
authorJan Vorlicek <janvorli@microsoft.com>
Sun, 5 Jan 2020 15:14:40 +0000 (16:14 +0100)
committerGitHub <noreply@github.com>
Sun, 5 Jan 2020 15:14:40 +0000 (16:14 +0100)
Crossgen2 was incorrectly setting the DelayLoadHelper kind to
DelayLoad_Helper instead of DelayLoad_Helper_Obj and
DelayLoad_Helper_ObjObj. This was causing GC holes.

src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRunSymbolNodeFactory.cs

index f449d69..3725ab7 100644 (file)
@@ -109,7 +109,7 @@ namespace ILCompiler.DependencyAnalysis
                 return new DelayLoadHelperImport(
                     _codegenNodeFactory,
                     _codegenNodeFactory.HelperImports,
-                    ReadyToRunHelper.DelayLoad_Helper,
+                    ReadyToRunHelper.DelayLoad_Helper_ObjObj,
                     new DelegateCtorSignature(ctorKey.Type, targetMethodNode, ctorKey.Method.Token, signatureContext));
             });
 
@@ -327,7 +327,7 @@ namespace ILCompiler.DependencyAnalysis
             return new DelayLoadHelperImport(
                 _codegenNodeFactory,
                 _codegenNodeFactory.HelperImports,
-                ReadyToRunHelper.DelayLoad_Helper,
+                ReadyToRunHelper.DelayLoad_Helper_Obj,
                 _codegenNodeFactory.TypeSignature(ReadyToRunFixupKind.IsInstanceOf, type, signatureContext));
         }