diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/ModuleTokenResolver.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/ModuleTokenResolver.cs index 86d507ab57af8d..d15ffc25c501cb 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/ModuleTokenResolver.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/ModuleTokenResolver.cs @@ -143,6 +143,11 @@ public void AddModuleTokenForMethod(MethodDesc method, ModuleToken token) AddModuleTokenForType(owningType, new ModuleToken(token.Module, owningTypeHandle)); memberRef.DecodeMethodSignature(new TokenResolverProvider(this, token.Module), this); } + if (token.TokenType == CorTokenType.mdtMethodDef) + { + MethodDefinition methodDef = token.MetadataReader.GetMethodDefinition((MethodDefinitionHandle)token.Handle); + methodDef.DecodeSignature(new TokenResolverProvider(this, token.Module), this); + } } private void AddModuleTokenForFieldReference(TypeDesc owningType, ModuleToken token) diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs index 6a325a5844c816..2bedb907e3c9b8 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs @@ -471,6 +471,12 @@ public void CompileMethod(MethodWithGCInfo methodCodeNodeNeedingCode, Logger log { if (!FunctionJustThrows(methodIL)) { + if (MethodBeingCompiled.GetTypicalMethodDefinition() is EcmaMethod ecmaMethod) + { + // Harvest the method being compiled for the purpose of populating the type resolver + var resolver = _compilation.NodeFactory.Resolver; + resolver.AddModuleTokenForMethod(MethodBeingCompiled, new ModuleToken(ecmaMethod.Module, ecmaMethod.Handle)); + } CompileMethodInternal(methodCodeNodeNeedingCode, methodIL); codeGotPublished = true; }