diff --git a/docs/design/datacontracts/CodeVersions.md b/docs/design/datacontracts/CodeVersions.md index c903bd84007cbc..241b17bbc60c21 100644 --- a/docs/design/datacontracts/CodeVersions.md +++ b/docs/design/datacontracts/CodeVersions.md @@ -132,7 +132,7 @@ IEnumerable ICodeVersions.GetILCodeVersions(TargetPointer m // CodeVersionManager::GetILCodeVersions GetModuleAndMethodDesc(methodDesc, out TargetPointer module, out uint methodDefToken); - ModuleHandle moduleHandle = _target.Contracts.Loader.GetModuleHandle(module); + ModuleHandle moduleHandle = _target.Contracts.Loader.GetModuleHandleFromModulePtr(module); TargetPointer ilCodeVersionTable = _target.Contracts.Loader.GetLookupTables(moduleHandle).MethodDefToILCodeVersioningState; TargetPointer ilVersionStateAddress = _target.Contracts.Loader.GetModuleLookupMapElement(ilCodeVersionTable, methodDefToken, out var _); @@ -247,7 +247,7 @@ bool ICodeVersions.CodeVersionManagerSupportsMethod(TargetPointer methodDescAddr TypeHandle mt = rts.GetTypeHandle(mtAddr); TargetPointer modAddr = rts.GetModule(mt); ILoader loader = _target.Contracts.Loader; - ModuleHandle mod = loader.GetModuleHandle(modAddr); + ModuleHandle mod = loader.GetModuleHandleFromModulePtr(modAddr); ModuleFlags modFlags = loader.GetFlags(mod); if (modFlags.HasFlag(ModuleFlags.EditAndContinue)) return false; diff --git a/docs/design/datacontracts/Loader.md b/docs/design/datacontracts/Loader.md index 916b4ff03bf77b..9964998eb51172 100644 --- a/docs/design/datacontracts/Loader.md +++ b/docs/design/datacontracts/Loader.md @@ -52,9 +52,11 @@ record struct ModuleLookupTables( ``` ``` csharp -ModuleHandle GetModuleHandle(TargetPointer module); -IEnumerable GetModules(TargetPointer appDomain, AssemblyIterationFlags iterationFlags); +ModuleHandle GetModuleHandleFromModulePtr(TargetPointer module); +ModuleHandle GetModuleHandleFromAssemblyPtr(TargetPointer assemblyPointer); +IEnumerable GetModuleHandles(TargetPointer appDomain, AssemblyIterationFlags iterationFlags); TargetPointer GetRootAssembly(); +TargetPointer GetModule(ModuleHandle handle); TargetPointer GetAssembly(ModuleHandle handle); TargetPointer GetPEAssembly(ModuleHandle handle); bool TryGetLoadedImageContents(ModuleHandle handle, out TargetPointer baseAddress, out uint size, out uint imageFlags); @@ -146,12 +148,18 @@ private enum ModuleFlags_1 : uint ### Method Implementations ``` csharp -ModuleHandle GetModuleHandle(TargetPointer modulePointer) +ModuleHandle GetModuleHandleFromModulePtr(TargetPointer modulePointer) { return new ModuleHandle(modulePointer); } -IEnumerable GetModules(TargetPointer appDomain, AssemblyIterationFlags iterationFlags) +ModuleHandle ILoader.GetModuleHandleFromAssemblyPtr(TargetPointer assemblyPointer) +{ + Data.Assembly assembly = // read Assembly object at assemblyPointer + return new ModuleHandle(assembly.Module); +} + +IEnumerable GetModuleHandles(TargetPointer appDomain, AssemblyIterationFlags iterationFlags) { if (appDomain == TargetPointer.Null) throw new ArgumentException("appDomain must not be null"); @@ -255,6 +263,11 @@ TargetPointer GetRootAssembly() return appDomain.RootAssembly; } +TargetPointer ILoader.GetModule(ModuleHandle handle) +{ + return handle.Address; +} + TargetPointer GetAssembly(ModuleHandle handle) { return target.ReadPointer(handle.Address + /* Module::Assembly offset */); diff --git a/docs/design/datacontracts/RuntimeTypeSystem.md b/docs/design/datacontracts/RuntimeTypeSystem.md index b1d65b7c825273..e8b784c35e8d39 100644 --- a/docs/design/datacontracts/RuntimeTypeSystem.md +++ b/docs/design/datacontracts/RuntimeTypeSystem.md @@ -1004,7 +1004,7 @@ Determining if a method is in a collectible module: { MethodDesc md = _methodDescs[methodDesc.Address]; TargetPointer loaderModuleAddr = GetLoaderModule(md); - ModuleHandle mod = _target.Contracts.Loader.GetModuleHandle(loaderModuleAddr); + ModuleHandle mod = _target.Contracts.Loader.GetModuleHandleFromModulePtr(loaderModuleAddr); return _target.Contracts.Loader.IsCollectible(mod); } diff --git a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.cs b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.cs index cda96efcddd73e..ea748dffda1cc2 100644 --- a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.cs +++ b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.cs @@ -75,10 +75,11 @@ public interface ILoader : IContract { static string IContract.Name => nameof(Loader); - ModuleHandle GetModuleHandle(TargetPointer modulePointer) => throw new NotImplementedException(); - - IEnumerable GetModules(TargetPointer appDomain, AssemblyIterationFlags iterationFlags) => throw new NotImplementedException(); + ModuleHandle GetModuleHandleFromModulePtr(TargetPointer modulePointer) => throw new NotImplementedException(); + ModuleHandle GetModuleHandleFromAssemblyPtr(TargetPointer assemblyPointer) => throw new NotImplementedException(); + IEnumerable GetModuleHandles(TargetPointer appDomain, AssemblyIterationFlags iterationFlags) => throw new NotImplementedException(); TargetPointer GetRootAssembly() => throw new NotImplementedException(); + TargetPointer GetModule(ModuleHandle handle) => throw new NotImplementedException(); TargetPointer GetAssembly(ModuleHandle handle) => throw new NotImplementedException(); TargetPointer GetPEAssembly(ModuleHandle handle) => throw new NotImplementedException(); bool TryGetLoadedImageContents(ModuleHandle handle, out TargetPointer baseAddress, out uint size, out uint imageFlags) => throw new NotImplementedException(); diff --git a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/CodeVersions_1.cs b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/CodeVersions_1.cs index 70fec695684029..9f0211efc7bcad 100644 --- a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/CodeVersions_1.cs +++ b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/CodeVersions_1.cs @@ -128,7 +128,7 @@ bool ICodeVersions.CodeVersionManagerSupportsMethod(TargetPointer methodDescAddr TypeHandle mt = rts.GetTypeHandle(mtAddr); TargetPointer modAddr = rts.GetModule(mt); ILoader loader = _target.Contracts.Loader; - ModuleHandle mod = loader.GetModuleHandle(modAddr); + ModuleHandle mod = loader.GetModuleHandleFromModulePtr(modAddr); ModuleFlags modFlags = loader.GetFlags(mod); if (modFlags.HasFlag(ModuleFlags.EditAndContinue)) return false; @@ -324,7 +324,7 @@ private TargetPointer GetILVersionStateAddress(TargetPointer module, uint method if (methodDefToken == (uint)EcmaMetadataUtils.TokenType.mdtMethodDef) return TargetPointer.Null; - ModuleHandle moduleHandle = _target.Contracts.Loader.GetModuleHandle(module); + ModuleHandle moduleHandle = _target.Contracts.Loader.GetModuleHandleFromModulePtr(module); TargetPointer ilCodeVersionTable = _target.Contracts.Loader.GetLookupTables(moduleHandle).MethodDefToILCodeVersioningState; TargetPointer ilVersionStateAddress = _target.Contracts.Loader.GetModuleLookupMapElement(ilCodeVersionTable, methodDefToken, out var _); return ilVersionStateAddress; diff --git a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.cs b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.cs index 1f51583b9e69fb..c03a42e840c5e7 100644 --- a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.cs +++ b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.cs @@ -43,15 +43,26 @@ internal Loader_1(Target target) _target = target; } - ModuleHandle ILoader.GetModuleHandle(TargetPointer modulePointer) + ModuleHandle ILoader.GetModuleHandleFromModulePtr(TargetPointer modulePointer) { if (modulePointer == TargetPointer.Null) throw new ArgumentNullException(nameof(modulePointer)); return new ModuleHandle(modulePointer); } + ModuleHandle ILoader.GetModuleHandleFromAssemblyPtr(TargetPointer assemblyPointer) + { + if (assemblyPointer == TargetPointer.Null) + throw new ArgumentNullException(nameof(assemblyPointer)); + + Data.Assembly assembly = _target.ProcessedData.GetOrAdd(assemblyPointer); + if (assembly.Module == TargetPointer.Null) + throw new InvalidOperationException("Assembly does not have a module associated with it."); + + return new ModuleHandle(assembly.Module); + } - IEnumerable ILoader.GetModules(TargetPointer appDomain, AssemblyIterationFlags iterationFlags) + IEnumerable ILoader.GetModuleHandles(TargetPointer appDomain, AssemblyIterationFlags iterationFlags) { if (appDomain == TargetPointer.Null) throw new ArgumentNullException(nameof(appDomain)); @@ -128,7 +139,10 @@ TargetPointer ILoader.GetRootAssembly() Data.AppDomain appDomain = _target.ProcessedData.GetOrAdd(_target.ReadPointer(appDomainPointer)); return appDomain.RootAssembly; } - + TargetPointer ILoader.GetModule(ModuleHandle handle) + { + return handle.Address; + } TargetPointer ILoader.GetAssembly(ModuleHandle handle) { Data.Module module = _target.ProcessedData.GetOrAdd(handle.Address); diff --git a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.cs b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.cs index 1225c281df73ee..91c10bc2466786 100644 --- a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.cs +++ b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.cs @@ -917,7 +917,7 @@ bool IRuntimeTypeSystem.IsCollectibleMethod(MethodDescHandle methodDesc) { MethodDesc md = _methodDescs[methodDesc.Address]; TargetPointer loaderModuleAddr = GetLoaderModule(md); - ModuleHandle mod = _target.Contracts.Loader.GetModuleHandle(loaderModuleAddr); + ModuleHandle mod = _target.Contracts.Loader.GetModuleHandleFromModulePtr(loaderModuleAddr); return _target.Contracts.Loader.IsCollectible(mod); } diff --git a/src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.cs b/src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.cs index 9f87ccf677422c..56eca6885f0170 100644 --- a/src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.cs +++ b/src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.cs @@ -129,7 +129,7 @@ int IXCLRDataModule.GetFileName(uint bufLen, uint* nameLen, char* name) try { Contracts.ILoader contract = _target.Contracts.Loader; - Contracts.ModuleHandle handle = contract.GetModuleHandle(_address); + Contracts.ModuleHandle handle = contract.GetModuleHandleFromModulePtr(_address); string result = string.Empty; try { @@ -180,7 +180,7 @@ int IXCLRDataModule.GetFlags(uint* flags) try { Contracts.ILoader contract = _target.Contracts.Loader; - Contracts.ModuleHandle handle = contract.GetModuleHandle(_address); + Contracts.ModuleHandle handle = contract.GetModuleHandleFromModulePtr(_address); ModuleFlags moduleFlags = contract.GetFlags(handle); if ((moduleFlags & ModuleFlags.ReflectionEmit) != 0) @@ -222,7 +222,7 @@ int IXCLRDataModule.StartEnumExtents(ulong* handle) if (!_extentsSet) { Contracts.ILoader contract = _target.Contracts.Loader; - Contracts.ModuleHandle moduleHandle = contract.GetModuleHandle(_address); + Contracts.ModuleHandle moduleHandle = contract.GetModuleHandleFromModulePtr(_address); TargetPointer peAssembly = contract.GetPEAssembly(moduleHandle); if (peAssembly == 0) @@ -268,7 +268,7 @@ int IXCLRDataModule.EnumExtent(ulong* handle, /*CLRDATA_MODULE_EXTENT*/ void* ex try { Contracts.ILoader contract = _target.Contracts.Loader; - Contracts.ModuleHandle moduleHandle = contract.GetModuleHandle(_address); + Contracts.ModuleHandle moduleHandle = contract.GetModuleHandleFromModulePtr(_address); if (!_extentsSet) { @@ -344,7 +344,7 @@ private int DacPrivateRequestGetModuleData(uint inBufferSize, byte* inBuffer, ui Unsafe.InitBlock(getModuleData, 0, (uint)sizeof(DacpGetModuleData)); Contracts.ILoader contract = _target.Contracts.Loader; - Contracts.ModuleHandle moduleHandle = contract.GetModuleHandle(_address); + Contracts.ModuleHandle moduleHandle = contract.GetModuleHandleFromModulePtr(_address); TargetPointer peAssembly = contract.GetPEAssembly(moduleHandle); bool isReflectionEmit = (contract.GetFlags(moduleHandle) & ModuleFlags.ReflectionEmit) != 0; diff --git a/src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.cs b/src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.cs index 4a07701f68daa1..813c7b92b4d88c 100644 --- a/src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.cs +++ b/src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.cs @@ -157,7 +157,7 @@ int ISOSDacInterface.GetAssemblyList(ClrDataAddress addr, int count, [In, Marsha else { ILoader loader = _target.Contracts.Loader; - List modules = loader.GetModules( + List modules = loader.GetModuleHandles( appDomain, AssemblyIterationFlags.IncludeLoading | AssemblyIterationFlags.IncludeLoaded | @@ -225,8 +225,54 @@ int ISOSDacInterface.GetAssemblyList(ClrDataAddress addr, int count, [In, Marsha } int ISOSDacInterface.GetAssemblyLocation(ClrDataAddress assembly, int count, char* location, uint* pNeeded) => _legacyImpl is not null ? _legacyImpl.GetAssemblyLocation(assembly, count, location, pNeeded) : HResults.E_NOTIMPL; - int ISOSDacInterface.GetAssemblyModuleList(ClrDataAddress assembly, uint count, [In, MarshalUsing(CountElementName = "count"), Out] ClrDataAddress[] modules, uint* pNeeded) - => _legacyImpl is not null ? _legacyImpl.GetAssemblyModuleList(assembly, count, modules, pNeeded) : HResults.E_NOTIMPL; + int ISOSDacInterface.GetAssemblyModuleList(ClrDataAddress assembly, uint count, [In, MarshalUsing(CountElementName = "count"), Out] ClrDataAddress[]? modules, uint* pNeeded) + { + if (assembly == 0) + { + return HResults.E_INVALIDARG; + } + int hr = HResults.S_OK; + try + { + if (modules is not null && modules.Length > 0 && count > 0) + { + TargetPointer addr = assembly.ToTargetPointer(_target); + Contracts.ILoader loader = _target.Contracts.Loader; + Contracts.ModuleHandle handle = loader.GetModuleHandleFromAssemblyPtr(addr); + TargetPointer modulePointer = loader.GetModule(handle); + modules[0] = modulePointer.ToClrDataAddress(_target); + } + + if (pNeeded is not null) + { + *pNeeded = 1; + } + } + catch (System.Exception ex) + { + hr = ex.HResult; + } + +#if DEBUG + if (_legacyImpl is not null) + { + ClrDataAddress[] modulesLocal = new ClrDataAddress[count]; + uint neededLocal; + int hrLocal = _legacyImpl.GetAssemblyModuleList(assembly, count, modulesLocal, &neededLocal); + Debug.Assert(hrLocal == hr, $"cDAC: {hr:x}, DAC: {hrLocal:x}"); + if (hr == HResults.S_OK) + { + Debug.Assert(pNeeded == null || *pNeeded == neededLocal); + if (modules is not null && modules.Length > 0) + { + Debug.Assert(modules[0] == modulesLocal[0], $"cDAC: {modules[0]:x}, DAC: {modulesLocal[0]:x}"); + } + } + } +#endif + return hr; + + } int ISOSDacInterface.GetAssemblyName(ClrDataAddress assembly, uint count, char* name, uint* pNeeded) => _legacyImpl is not null ? _legacyImpl.GetAssemblyName(assembly, count, name, pNeeded) : HResults.E_NOTIMPL; int ISOSDacInterface.GetCCWData(ClrDataAddress ccw, void* data) @@ -262,7 +308,10 @@ int ISOSDacInterface.GetDomainFromContext(ClrDataAddress context, ClrDataAddress ClrDataAddress domainLocal; int hrLocal = _legacyImpl.GetDomainFromContext(context, &domainLocal); Debug.Assert(hrLocal == hr, $"cDAC: {hr:x}, DAC: {hrLocal:x}"); - Debug.Assert(domainLocal == context, $"cDAC: {context:x}, DAC: {domainLocal:x}"); + if (hr == HResults.S_OK) + { + Debug.Assert(domainLocal == context, $"cDAC: {context:x}, DAC: {domainLocal:x}"); + } } #endif return hr; @@ -767,7 +816,7 @@ int ISOSDacInterface.GetMethodDescName(ClrDataAddress addr, uint count, char* na else { TargetPointer modulePtr = rtsContract.GetModule(rtsContract.GetTypeHandle(rtsContract.GetMethodTable(methodDescHandle))); - Contracts.ModuleHandle module = _target.Contracts.Loader.GetModuleHandle(modulePtr); + Contracts.ModuleHandle module = _target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePtr); string modulePath = _target.Contracts.Loader.GetPath(module); ReadOnlySpan moduleSpan = modulePath.AsSpan(); char directorySeparator = (char)_target.ReadGlobal(Constants.Globals.DirectorySeparator); @@ -1076,7 +1125,7 @@ int ISOSDacInterface.GetModuleData(ClrDataAddress moduleAddr, DacpModuleData* da try { Contracts.ILoader contract = _target.Contracts.Loader; - Contracts.ModuleHandle handle = contract.GetModuleHandle(moduleAddr.ToTargetPointer(_target)); + Contracts.ModuleHandle handle = contract.GetModuleHandleFromModulePtr(moduleAddr.ToTargetPointer(_target)); data->Address = moduleAddr; data->PEAssembly = moduleAddr; // Module address in .NET 9+ - correspondingly, SOS-DAC APIs for PE assemblies expect a module address @@ -1366,7 +1415,7 @@ int ISOSDacInterface.GetPEFileBase(ClrDataAddress addr, ClrDataAddress* peBase) try { Contracts.ILoader contract = _target.Contracts.Loader; - Contracts.ModuleHandle handle = contract.GetModuleHandle(addr.ToTargetPointer(_target)); + Contracts.ModuleHandle handle = contract.GetModuleHandleFromModulePtr(addr.ToTargetPointer(_target)); Contracts.ModuleFlags flags = contract.GetFlags(handle); if (!flags.HasFlag(Contracts.ModuleFlags.ReflectionEmit)) @@ -1405,7 +1454,7 @@ int ISOSDacInterface.GetPEFileName(ClrDataAddress addr, uint count, char* fileNa try { Contracts.ILoader contract = _target.Contracts.Loader; - Contracts.ModuleHandle handle = contract.GetModuleHandle(addr.ToTargetPointer(_target)); + Contracts.ModuleHandle handle = contract.GetModuleHandleFromModulePtr(addr.ToTargetPointer(_target)); string path = contract.GetPath(handle); // Return not implemented for empty paths for non-reflection emit assemblies (for example, loaded from memory) diff --git a/src/native/managed/cdac/mscordaccore_universal/Legacy/SigFormat.cs b/src/native/managed/cdac/mscordaccore_universal/Legacy/SigFormat.cs index 69246f6b1e85f0..98ac68d98d0dde 100644 --- a/src/native/managed/cdac/mscordaccore_universal/Legacy/SigFormat.cs +++ b/src/native/managed/cdac/mscordaccore_universal/Legacy/SigFormat.cs @@ -179,7 +179,7 @@ private static unsafe void AddTypeString(Target target, uint typeDefToken = runtimeTypeSystem.GetTypeDefToken(th); TargetPointer modulePointer = target.Contracts.RuntimeTypeSystem.GetModule(th); - Contracts.ModuleHandle module = target.Contracts.Loader.GetModuleHandle(modulePointer); + Contracts.ModuleHandle module = target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePointer); MetadataReader internalTypeMetadata = target.Contracts.EcmaMetadata.GetMetadata(module)!; TypeDefinition internalTypeDef = internalTypeMetadata.GetTypeDefinition((TypeDefinitionHandle)MetadataTokens.Handle((int)typeDefToken)); @@ -345,7 +345,7 @@ private static void AddType(Target target, StringBuilder stringBuilder, TypeHand case CorElementType.Class: uint typeDefToken = runtimeTypeSystem.GetTypeDefToken(typeHandle); TargetPointer modulePointer = target.Contracts.RuntimeTypeSystem.GetModule(typeHandle); - Contracts.ModuleHandle module = target.Contracts.Loader.GetModuleHandle(modulePointer); + Contracts.ModuleHandle module = target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePointer); MetadataReader metadata = target.Contracts.EcmaMetadata.GetMetadata(module)!; TypeDefinition typeDef = metadata.GetTypeDefinition((TypeDefinitionHandle)MetadataTokens.Handle((int)typeDefToken)); string _namespace = metadata.GetString(typeDef.Namespace); @@ -390,7 +390,7 @@ private static void AddType(Target target, StringBuilder stringBuilder, TypeHand case CorElementType.MVar: case CorElementType.Var: runtimeTypeSystem.IsGenericVariable(typeHandle, out TargetPointer genericVariableModulePointer, out uint typeVarToken); - Contracts.ModuleHandle genericVariableModule = target.Contracts.Loader.GetModuleHandle(genericVariableModulePointer); + Contracts.ModuleHandle genericVariableModule = target.Contracts.Loader.GetModuleHandleFromModulePtr(genericVariableModulePointer); MetadataReader generatedVariableMetadata = target.Contracts.EcmaMetadata.GetMetadata(genericVariableModule)!; GenericParameter genericVariable = generatedVariableMetadata.GetGenericParameter((GenericParameterHandle)MetadataTokens.Handle((int)typeVarToken)); stringBuilder.Append(generatedVariableMetadata.GetString(genericVariable.Name)); diff --git a/src/native/managed/cdac/mscordaccore_universal/Legacy/TypeNameBuilder.cs b/src/native/managed/cdac/mscordaccore_universal/Legacy/TypeNameBuilder.cs index 1688f34db24d15..d05f14803d5baa 100644 --- a/src/native/managed/cdac/mscordaccore_universal/Legacy/TypeNameBuilder.cs +++ b/src/native/managed/cdac/mscordaccore_universal/Legacy/TypeNameBuilder.cs @@ -119,7 +119,7 @@ public static void AppendMethodImpl(Target target, StringBuilder stringBuilder, } else { - module = loader.GetModuleHandle(runtimeTypeSystem.GetModule(th)); + module = loader.GetModuleHandleFromModulePtr(runtimeTypeSystem.GetModule(th)); MetadataReader reader = target.Contracts.EcmaMetadata.GetMetadata(module)!; MethodDefinition methodDef = reader.GetMethodDefinition(MetadataTokens.MethodDefinitionHandle((int)runtimeTypeSystem.GetMethodToken(method))); stringBuilder.Append(reader.GetString(methodDef.Name)); @@ -226,7 +226,7 @@ private static void AppendTypeCore(ref TypeNameBuilder tnb, Contracts.TypeHandle } else if (typeSystemContract.IsGenericVariable(typeHandle, out TargetPointer modulePointer, out uint genericParamToken)) { - Contracts.ModuleHandle module = tnb.Target.Contracts.Loader.GetModuleHandle(modulePointer); + Contracts.ModuleHandle module = tnb.Target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePointer); MetadataReader reader = tnb.Target.Contracts.EcmaMetadata.GetMetadata(module)!; var handle = (GenericParameterHandle)MetadataTokens.Handle((int)genericParamToken); GenericParameter genericParam = reader.GetGenericParameter(handle); @@ -280,7 +280,7 @@ private static void AppendTypeCore(ref TypeNameBuilder tnb, Contracts.TypeHandle { // ...otherwise it's just a plain type def or an instantiated type uint typeDefToken = typeSystemContract.GetTypeDefToken(typeHandle); - Contracts.ModuleHandle moduleHandle = tnb.Target.Contracts.Loader.GetModuleHandle(typeSystemContract.GetModule(typeHandle)); + Contracts.ModuleHandle moduleHandle = tnb.Target.Contracts.Loader.GetModuleHandleFromModulePtr(typeSystemContract.GetModule(typeHandle)); if (MetadataTokens.EntityHandle((int)typeDefToken).IsNil) { tnb.AddName("(dynamicClass)"); @@ -311,7 +311,7 @@ private static void AppendTypeCore(ref TypeNameBuilder tnb, Contracts.TypeHandle { TargetPointer modulePtr = typeSystemContract.GetModule(typeHandle); - Contracts.ModuleHandle module = tnb.Target.Contracts.Loader.GetModuleHandle(modulePtr); + Contracts.ModuleHandle module = tnb.Target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePtr); // NOTE: The DAC variant of assembly name generation is different than the runtime version. The DAC variant is simpler, and only uses SimpleName MetadataReader mr = tnb.Target.Contracts.EcmaMetadata.GetMetadata(module)!; diff --git a/src/native/managed/cdac/tests/CodeVersionsTests.cs b/src/native/managed/cdac/tests/CodeVersionsTests.cs index 570fa878270746..1b7619349cd1dc 100644 --- a/src/native/managed/cdac/tests/CodeVersionsTests.cs +++ b/src/native/managed/cdac/tests/CodeVersionsTests.cs @@ -85,7 +85,7 @@ public static void AddCodeBlock(this Mock mock, MockCodeBlock public static void AddModule(this Mock mock, MockModule module) { Contracts.ModuleHandle handle = new Contracts.ModuleHandle(module.Address); - mock.Setup(l => l.GetModuleHandle(module.Address)).Returns(handle); + mock.Setup(l => l.GetModuleHandleFromModulePtr(module.Address)).Returns(handle); mock.Setup(l => l.GetLookupTables(handle)).Returns(new ModuleLookupTables() { MethodDefToILCodeVersioningState = module.MethodDefToILCodeVersioningStateAddress, }); diff --git a/src/native/managed/cdac/tests/LoaderTests.cs b/src/native/managed/cdac/tests/LoaderTests.cs index 2e13e784dccf8f..da7198d353aa83 100644 --- a/src/native/managed/cdac/tests/LoaderTests.cs +++ b/src/native/managed/cdac/tests/LoaderTests.cs @@ -36,12 +36,12 @@ public void GetPath(MockTarget.Architecture arch) ILoader contract = target.Contracts.Loader; Assert.NotNull(contract); { - Contracts.ModuleHandle handle = contract.GetModuleHandle(moduleAddr); + Contracts.ModuleHandle handle = contract.GetModuleHandleFromModulePtr(moduleAddr); string actual = contract.GetPath(handle); Assert.Equal(expected, actual); } { - Contracts.ModuleHandle handle = contract.GetModuleHandle(moduleAddrEmptyPath); + Contracts.ModuleHandle handle = contract.GetModuleHandleFromModulePtr(moduleAddrEmptyPath); string actual = contract.GetFileName(handle); Assert.Equal(string.Empty, actual); } @@ -70,12 +70,12 @@ public void GetFileName(MockTarget.Architecture arch) Contracts.ILoader contract = target.Contracts.Loader; Assert.NotNull(contract); { - Contracts.ModuleHandle handle = contract.GetModuleHandle(moduleAddr); + Contracts.ModuleHandle handle = contract.GetModuleHandleFromModulePtr(moduleAddr); string actual = contract.GetFileName(handle); Assert.Equal(expected, actual); } { - Contracts.ModuleHandle handle = contract.GetModuleHandle(moduleAddrEmptyName); + Contracts.ModuleHandle handle = contract.GetModuleHandleFromModulePtr(moduleAddrEmptyName); string actual = contract.GetFileName(handle); Assert.Equal(string.Empty, actual); }