diff --git a/src/native/managed/cdacreader/Directory.Build.props b/src/native/managed/cdacreader/Directory.Build.props new file mode 100644 index 00000000000000..41402cb0183fb6 --- /dev/null +++ b/src/native/managed/cdacreader/Directory.Build.props @@ -0,0 +1,8 @@ + + + + + <_Parameter1>NETCDAC0001 + + + diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/ContractRegistry.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/ContractRegistry.cs index 901084cd2c7d5e..0e8a580bcb4c24 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/ContractRegistry.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/ContractRegistry.cs @@ -9,7 +9,7 @@ namespace Microsoft.Diagnostics.DataContractReader; /// /// A registry of all the contracts that may be provided by a target. /// -internal abstract class ContractRegistry +public abstract class ContractRegistry { /// /// Gets an instance of the Exception contract for the target. diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/Extensions/ICodeVersionsExtensions.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/Extensions/ICodeVersionsExtensions.cs index 37cd53791f576c..e207e101606146 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/Extensions/ICodeVersionsExtensions.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/Extensions/ICodeVersionsExtensions.cs @@ -3,9 +3,9 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts.Extensions; -internal static class ICodeVersionsExtensions +public static class ICodeVersionsExtensions { - internal static NativeCodeVersionHandle GetActiveNativeCodeVersion(this ICodeVersions cv, TargetPointer methodDesc) + public static NativeCodeVersionHandle GetActiveNativeCodeVersion(this ICodeVersions cv, TargetPointer methodDesc) { ILCodeVersionHandle ilCodeVersionHandle = cv.GetActiveILCodeVersion(methodDesc); return cv.GetActiveNativeCodeVersionForILCodeVersion(methodDesc, ilCodeVersionHandle); diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/Extensions/IReJITExtensions.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/Extensions/IReJITExtensions.cs index be505aa3d662f7..0701e6c7212f02 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/Extensions/IReJITExtensions.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/Extensions/IReJITExtensions.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts.Extensions; -internal static class IReJITExtensions +public static class IReJITExtensions { public static IEnumerable GetRejitIds(this IReJIT rejit, Target target, TargetPointer methodDesc) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ICodeVersions.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ICodeVersions.cs index a422ccabfbd3e0..921d37583d8607 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ICodeVersions.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ICodeVersions.cs @@ -6,7 +6,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal interface ICodeVersions : IContract +public interface ICodeVersions : IContract { static string IContract.Name { get; } = nameof(CodeVersions); @@ -27,11 +27,12 @@ internal interface ICodeVersions : IContract public virtual bool CodeVersionManagerSupportsMethod(TargetPointer methodDesc) => throw new NotImplementedException(); } -internal readonly struct ILCodeVersionHandle +public readonly struct ILCodeVersionHandle { - internal readonly TargetPointer Module; - internal readonly uint MethodDefinition; - internal readonly TargetPointer ILCodeVersionNode; + // TODO-Layering: These members should be accessible only to contract implementations. + public readonly TargetPointer Module; + public readonly uint MethodDefinition; + public readonly TargetPointer ILCodeVersionNode; private ILCodeVersionHandle(TargetPointer module, uint methodDef, TargetPointer ilCodeVersionNodeAddress) { if (module != TargetPointer.Null && ilCodeVersionNodeAddress != TargetPointer.Null) @@ -49,23 +50,24 @@ private ILCodeVersionHandle(TargetPointer module, uint methodDef, TargetPointer } // for more information on Explicit/Synthetic code versions see docs/design/features/code-versioning.md - internal static ILCodeVersionHandle CreateExplicit(TargetPointer ilCodeVersionNodeAddress) => + public static ILCodeVersionHandle CreateExplicit(TargetPointer ilCodeVersionNodeAddress) => new ILCodeVersionHandle(TargetPointer.Null, 0, ilCodeVersionNodeAddress); - internal static ILCodeVersionHandle CreateSynthetic(TargetPointer module, uint methodDef) => + public static ILCodeVersionHandle CreateSynthetic(TargetPointer module, uint methodDef) => new ILCodeVersionHandle(module, methodDef, TargetPointer.Null); public static ILCodeVersionHandle Invalid { get; } = new(TargetPointer.Null, 0, TargetPointer.Null); public bool IsValid => Module != TargetPointer.Null || ILCodeVersionNode != TargetPointer.Null; - internal bool IsExplicit => ILCodeVersionNode != TargetPointer.Null; + public bool IsExplicit => ILCodeVersionNode != TargetPointer.Null; } -internal readonly struct NativeCodeVersionHandle +public readonly struct NativeCodeVersionHandle { // no public constructors - internal readonly TargetPointer MethodDescAddress; - internal readonly TargetPointer CodeVersionNodeAddress; + // TODO-Layering: These members should be accessible only to contract implementations. + public readonly TargetPointer MethodDescAddress; + public readonly TargetPointer CodeVersionNodeAddress; private NativeCodeVersionHandle(TargetPointer methodDescAddress, TargetPointer codeVersionNodeAddress) { if (methodDescAddress != TargetPointer.Null && codeVersionNodeAddress != TargetPointer.Null) @@ -77,19 +79,19 @@ private NativeCodeVersionHandle(TargetPointer methodDescAddress, TargetPointer c } // for more information on Explicit/Synthetic code versions see docs/design/features/code-versioning.md - internal static NativeCodeVersionHandle CreateExplicit(TargetPointer codeVersionNodeAddress) => + public static NativeCodeVersionHandle CreateExplicit(TargetPointer codeVersionNodeAddress) => new NativeCodeVersionHandle(TargetPointer.Null, codeVersionNodeAddress); - internal static NativeCodeVersionHandle CreateSynthetic(TargetPointer methodDescAddress) => + public static NativeCodeVersionHandle CreateSynthetic(TargetPointer methodDescAddress) => new NativeCodeVersionHandle(methodDescAddress, TargetPointer.Null); public static NativeCodeVersionHandle Invalid { get; } = new(TargetPointer.Null, TargetPointer.Null); public bool Valid => MethodDescAddress != TargetPointer.Null || CodeVersionNodeAddress != TargetPointer.Null; - internal bool IsExplicit => CodeVersionNodeAddress != TargetPointer.Null; + public bool IsExplicit => CodeVersionNodeAddress != TargetPointer.Null; } -internal readonly struct CodeVersions : ICodeVersions +public readonly struct CodeVersions : ICodeVersions { // throws NotImplementedException for all methods } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IContract.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IContract.cs index 43dadfb923b3cc..68b76a010d8653 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IContract.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IContract.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal interface IContract +public interface IContract { static virtual string Name => throw new NotImplementedException(); } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IDacStreams.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IDacStreams.cs index 76c33b469aee77..86be237673ef8e 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IDacStreams.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IDacStreams.cs @@ -5,13 +5,13 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal interface IDacStreams : IContract +public interface IDacStreams : IContract { static string IContract.Name { get; } = nameof(DacStreams); public virtual string? StringFromEEAddress(TargetPointer address) => throw new NotImplementedException(); } -internal readonly struct DacStreams : IDacStreams +public readonly struct DacStreams : IDacStreams { // Everything throws NotImplementedException } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IEcmaMetadata.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IEcmaMetadata.cs index d2fe21ff33823f..6477b1593dc22d 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IEcmaMetadata.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IEcmaMetadata.cs @@ -6,14 +6,14 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal interface IEcmaMetadata : IContract +public interface IEcmaMetadata : IContract { static string IContract.Name { get; } = nameof(EcmaMetadata); public virtual TargetSpan GetReadOnlyMetadataAddress(ModuleHandle handle) => throw new NotImplementedException(); public virtual MetadataReader? GetMetadata(ModuleHandle module) => throw new NotImplementedException(); } -internal readonly struct EcmaMetadata : IEcmaMetadata +public readonly struct EcmaMetadata : IEcmaMetadata { // Everything throws NotImplementedException } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IException.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IException.cs index 66c2af846cd8c3..3adc510b36436d 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IException.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IException.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal record struct ExceptionData( +public record struct ExceptionData( TargetPointer Message, TargetPointer InnerException, TargetPointer StackTrace, @@ -15,7 +15,7 @@ internal record struct ExceptionData( int HResult, int XCode); -internal interface IException : IContract +public interface IException : IContract { static string IContract.Name { get; } = nameof(Exception); @@ -23,7 +23,7 @@ internal interface IException : IContract public virtual ExceptionData GetExceptionData(TargetPointer managedException) => throw new NotImplementedException(); } -internal readonly struct Exception : IException +public readonly struct Exception : IException { // Everything throws NotImplementedException } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.cs index 994dec03a67ab1..ecb174e222f374 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.cs @@ -5,13 +5,14 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal struct CodeBlockHandle +public struct CodeBlockHandle { + // TODO-Layering: These members should be accessible only to contract implementations. public readonly TargetPointer Address; - internal CodeBlockHandle(TargetPointer address) => Address = address; + public CodeBlockHandle(TargetPointer address) => Address = address; } -internal interface IExecutionManager : IContract +public interface IExecutionManager : IContract { static string IContract.Name { get; } = nameof(ExecutionManager); CodeBlockHandle? GetCodeBlockHandle(TargetCodePointer ip) => throw new NotImplementedException(); @@ -19,7 +20,7 @@ internal interface IExecutionManager : IContract TargetCodePointer GetStartAddress(CodeBlockHandle codeInfoHandle) => throw new NotImplementedException(); } -internal readonly struct ExecutionManager : IExecutionManager +public readonly struct ExecutionManager : IExecutionManager { } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.cs index 6cb5eadbaf0adc..bff7a2c25d405a 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.cs @@ -6,24 +6,24 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal readonly struct ModuleHandle +public readonly struct ModuleHandle { - internal ModuleHandle(TargetPointer address) + public ModuleHandle(TargetPointer address) { Address = address; } - internal TargetPointer Address { get; } + public TargetPointer Address { get; } } [Flags] -internal enum ModuleFlags +public enum ModuleFlags { EditAndContinue = 0x00000008, // Edit and Continue is enabled for this module ReflectionEmit = 0x00000040, // Reflection.Emit was used to create this module } -internal record struct ModuleLookupTables( +public record struct ModuleLookupTables( TargetPointer FieldDefToDesc, TargetPointer ManifestModuleReferences, TargetPointer MemberRefToDesc, @@ -32,7 +32,7 @@ internal record struct ModuleLookupTables( TargetPointer TypeRefToMethodTable, TargetPointer MethodDefToILCodeVersioningState); -internal interface ILoader : IContract +public interface ILoader : IContract { static string IContract.Name => nameof(Loader); @@ -52,7 +52,7 @@ internal interface ILoader : IContract public virtual bool IsCollectible(ModuleHandle handle) => throw new NotImplementedException(); } -internal readonly struct Loader : ILoader +public readonly struct Loader : ILoader { // Everything throws NotImplementedException } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IObject.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IObject.cs index 780ce9b4f1bdaa..c202f821794355 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IObject.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IObject.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal interface IObject : IContract +public interface IObject : IContract { static string IContract.Name { get; } = nameof(Object); public virtual TargetPointer GetMethodTableAddress(TargetPointer address) => throw new NotImplementedException(); @@ -14,7 +14,7 @@ internal interface IObject : IContract public virtual bool GetBuiltInComData(TargetPointer address, out TargetPointer rcw, out TargetPointer ccw) => throw new NotImplementedException(); } -internal readonly struct Object : IObject +public readonly struct Object : IObject { // Everything throws NotImplementedException } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPlatformMetadata.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPlatformMetadata.cs index 1e384a0642459c..ef393b604f17ff 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPlatformMetadata.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPlatformMetadata.cs @@ -5,20 +5,20 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal enum CodePointerFlags : byte +public enum CodePointerFlags : byte { HasArm32ThumbBit = 0x1, HasArm64PtrAuth = 0x2, } -internal interface IPlatformMetadata : IContract +public interface IPlatformMetadata : IContract { static string IContract.Name { get; } = nameof(PlatformMetadata); TargetPointer GetPrecodeMachineDescriptor() => throw new NotImplementedException(); CodePointerFlags GetCodePointerFlags() => throw new NotImplementedException(); } -internal readonly struct PlatformMetadata : IPlatformMetadata +public readonly struct PlatformMetadata : IPlatformMetadata { } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.cs index e693d65afd2a84..aced1d2316dd08 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.cs @@ -5,13 +5,13 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal interface IPrecodeStubs : IContract +public interface IPrecodeStubs : IContract { static string IContract.Name { get; } = nameof(PrecodeStubs); TargetPointer GetMethodDescFromStubAddress(TargetCodePointer entryPoint) => throw new NotImplementedException(); } -internal readonly struct PrecodeStubs : IPrecodeStubs +public readonly struct PrecodeStubs : IPrecodeStubs { } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IReJIT.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IReJIT.cs index 0a99efd76d5a37..e01fca40002b73 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IReJIT.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IReJIT.cs @@ -12,7 +12,7 @@ public enum RejitState Active } -internal interface IReJIT : IContract +public interface IReJIT : IContract { static string IContract.Name { get; } = nameof(ReJIT); @@ -23,7 +23,7 @@ internal interface IReJIT : IContract TargetNUInt GetRejitId(ILCodeVersionHandle codeVersionHandle) => throw new NotImplementedException(); } -internal readonly struct ReJIT : IReJIT +public readonly struct ReJIT : IReJIT { } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.cs index ecf243f9b6ce8a..3425e26f43b5b7 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.cs @@ -6,19 +6,20 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; // an opaque handle to a type handle. See IMetadata.GetMethodTableData -internal readonly struct TypeHandle +public readonly struct TypeHandle { - internal TypeHandle(TargetPointer address) + // TODO-Layering: These members should be accessible only to contract implementations. + public TypeHandle(TargetPointer address) { Address = address; } - internal TargetPointer Address { get; } + public TargetPointer Address { get; } - internal bool IsNull => Address == 0; + public bool IsNull => Address == 0; } -internal enum CorElementType +public enum CorElementType { Void = 1, Boolean = 2, @@ -55,14 +56,15 @@ internal enum CorElementType Sentinel = 0x41, } -internal readonly struct MethodDescHandle +public readonly struct MethodDescHandle { - internal MethodDescHandle(TargetPointer address) + // TODO-Layering: These members should be accessible only to contract implementations. + public MethodDescHandle(TargetPointer address) { Address = address; } - internal TargetPointer Address { get; } + public TargetPointer Address { get; } } public enum ArrayFunctionType @@ -73,7 +75,7 @@ public enum ArrayFunctionType Constructor = 3 } -internal interface IRuntimeTypeSystem : IContract +public interface IRuntimeTypeSystem : IContract { static string IContract.Name => nameof(RuntimeTypeSystem); @@ -171,7 +173,7 @@ internal interface IRuntimeTypeSystem : IContract #endregion MethodDesc inspection APIs } -internal struct RuntimeTypeSystem : IRuntimeTypeSystem +public struct RuntimeTypeSystem : IRuntimeTypeSystem { // Everything throws NotImplementedException } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IThread.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IThread.cs index cca1c522f10174..f08bfca8103e04 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IThread.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IThread.cs @@ -5,20 +5,20 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal record struct ThreadStoreData( +public record struct ThreadStoreData( int ThreadCount, TargetPointer FirstThread, TargetPointer FinalizerThread, TargetPointer GCThread); -internal record struct ThreadStoreCounts( +public record struct ThreadStoreCounts( int UnstartedThreadCount, int BackgroundThreadCount, int PendingThreadCount, int DeadThreadCount); [Flags] -internal enum ThreadState +public enum ThreadState { Unknown = 0x00000000, Hijacked = 0x00000080, // Return address has been hijacked @@ -28,7 +28,7 @@ internal enum ThreadState ThreadPoolWorker = 0x01000000, // Thread is a thread pool worker thread } -internal record struct ThreadData( +public record struct ThreadData( uint Id, TargetNUInt OSId, ThreadState State, @@ -41,7 +41,7 @@ internal record struct ThreadData( TargetPointer LastThrownObjectHandle, TargetPointer NextThread); -internal interface IThread : IContract +public interface IThread : IContract { static string IContract.Name { get; } = nameof(Thread); @@ -50,7 +50,7 @@ internal interface IThread : IContract public virtual ThreadData GetThreadData(TargetPointer thread) => throw new NotImplementedException(); } -internal readonly struct Thread : IThread +public readonly struct Thread : IThread { // Everything throws NotImplementedException } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Data/IData.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Data/IData.cs index 65b7be805c838e..bb74a34311fc1e 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Data/IData.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Data/IData.cs @@ -3,7 +3,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Data; -internal interface IData where TSelf : IData +public interface IData where TSelf : IData { static abstract TSelf Create(Target target, TargetPointer address); } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/IContractFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/IContractFactory.cs index 4f1600ab0e7a73..ca19d7ed3d05fb 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/IContractFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/IContractFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader; -internal interface IContractFactory where TContract : Contracts.IContract +public interface IContractFactory where TContract : Contracts.IContract { TContract CreateContract(Target target, int version); } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Microsoft.Diagnostics.DataContractReader.Abstractions.csproj b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Microsoft.Diagnostics.DataContractReader.Abstractions.csproj index 142d604c464f84..fdadf081101fac 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Microsoft.Diagnostics.DataContractReader.Abstractions.csproj +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Microsoft.Diagnostics.DataContractReader.Abstractions.csproj @@ -10,12 +10,4 @@ true false - - - - - - - - diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Properties/InternalsVisibleTo.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Properties/InternalsVisibleTo.cs deleted file mode 100644 index 444c0839674889..00000000000000 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Properties/InternalsVisibleTo.cs +++ /dev/null @@ -1,7 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Runtime.CompilerServices; - -// Allows Moq framework to mock internal types (for example, contract interfaces) -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Target.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Target.cs index aa1174cd0b2e16..b46d6ca92cd088 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Target.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Abstractions/Target.cs @@ -16,7 +16,7 @@ namespace Microsoft.Diagnostics.DataContractReader; /// information. Like the contracts themselves in cdacreader, these are throwing APIs. Any callers at the boundaries /// (for example, unmanaged entry points, COM) should handle any exceptions. /// -internal abstract class Target +public abstract class Target { /// /// Pointer size of the target diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.cs index 81913e30eaeff9..c93e3620c9771e 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.cs @@ -3,48 +3,60 @@ namespace Microsoft.Diagnostics.DataContractReader; -internal static class Constants +public static class Constants { - internal static class Globals + public static class Globals { // See src/coreclr/debug/runtimeinfo/datadescriptor.h - internal const string AppDomain = nameof(AppDomain); - internal const string ThreadStore = nameof(ThreadStore); - internal const string FinalizerThread = nameof(FinalizerThread); - internal const string GCThread = nameof(GCThread); + public const string AppDomain = nameof(AppDomain); + public const string ThreadStore = nameof(ThreadStore); + public const string FinalizerThread = nameof(FinalizerThread); + public const string GCThread = nameof(GCThread); - internal const string FeatureCOMInterop = nameof(FeatureCOMInterop); - internal const string FeatureEHFunclets = nameof(FeatureEHFunclets); + public const string FeatureCOMInterop = nameof(FeatureCOMInterop); + public const string FeatureEHFunclets = nameof(FeatureEHFunclets); - internal const string ObjectToMethodTableUnmask = nameof(ObjectToMethodTableUnmask); - internal const string SOSBreakingChangeVersion = nameof(SOSBreakingChangeVersion); + public const string ObjectToMethodTableUnmask = nameof(ObjectToMethodTableUnmask); + public const string SOSBreakingChangeVersion = nameof(SOSBreakingChangeVersion); - internal const string ExceptionMethodTable = nameof(ExceptionMethodTable); - internal const string FreeObjectMethodTable = nameof(FreeObjectMethodTable); - internal const string ObjectMethodTable = nameof(ObjectMethodTable); - internal const string ObjectArrayMethodTable = nameof(ObjectArrayMethodTable); - internal const string StringMethodTable = nameof(StringMethodTable); + public const string ExceptionMethodTable = nameof(ExceptionMethodTable); + public const string FreeObjectMethodTable = nameof(FreeObjectMethodTable); + public const string ObjectMethodTable = nameof(ObjectMethodTable); + public const string ObjectArrayMethodTable = nameof(ObjectArrayMethodTable); + public const string StringMethodTable = nameof(StringMethodTable); - internal const string MiniMetaDataBuffAddress = nameof(MiniMetaDataBuffAddress); - internal const string MiniMetaDataBuffMaxSize = nameof(MiniMetaDataBuffMaxSize); + public const string MiniMetaDataBuffAddress = nameof(MiniMetaDataBuffAddress); + public const string MiniMetaDataBuffMaxSize = nameof(MiniMetaDataBuffMaxSize); - internal const string MethodDescAlignment = nameof(MethodDescAlignment); - internal const string ObjectHeaderSize = nameof(ObjectHeaderSize); - internal const string SyncBlockValueToObjectOffset = nameof(SyncBlockValueToObjectOffset); + public const string MethodDescAlignment = nameof(MethodDescAlignment); + public const string ObjectHeaderSize = nameof(ObjectHeaderSize); + public const string SyncBlockValueToObjectOffset = nameof(SyncBlockValueToObjectOffset); - internal const string SyncTableEntries = nameof(SyncTableEntries); + public const string SyncTableEntries = nameof(SyncTableEntries); - internal const string ArrayBoundsZero = nameof(ArrayBoundsZero); + public const string ArrayBoundsZero = nameof(ArrayBoundsZero); - internal const string MethodDescTokenRemainderBitCount = nameof(MethodDescTokenRemainderBitCount); - internal const string DirectorySeparator = nameof(DirectorySeparator); + public const string MethodDescTokenRemainderBitCount = nameof(MethodDescTokenRemainderBitCount); + public const string DirectorySeparator = nameof(DirectorySeparator); - internal const string ExecutionManagerCodeRangeMapAddress = nameof(ExecutionManagerCodeRangeMapAddress); - internal const string StubCodeBlockLast = nameof(StubCodeBlockLast); - internal const string PlatformMetadata = nameof(PlatformMetadata); - internal const string ProfilerControlBlock = nameof(ProfilerControlBlock); + public const string ExecutionManagerCodeRangeMapAddress = nameof(ExecutionManagerCodeRangeMapAddress); + public const string StubCodeBlockLast = nameof(StubCodeBlockLast); + public const string PlatformMetadata = nameof(PlatformMetadata); + public const string ProfilerControlBlock = nameof(ProfilerControlBlock); - internal const string HashMapSlotsPerBucket = nameof(HashMapSlotsPerBucket); - internal const string HashMapValueMask = nameof(HashMapValueMask); + public const string HashMapSlotsPerBucket = nameof(HashMapSlotsPerBucket); + public const string HashMapValueMask = nameof(HashMapValueMask); + } + public static class FieldNames + { + public static class Array + { + public const string NumComponents = $"m_{nameof(NumComponents)}"; + } + + public static class ModuleLookupMap + { + public const string TableData = nameof(TableData); + } } } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/CodeVersionsFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/CodeVersionsFactory.cs index 8d0c384c7361e1..733bc5d5c0cf58 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/CodeVersionsFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/CodeVersionsFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class CodeVersionsFactory : IContractFactory +public sealed class CodeVersionsFactory : IContractFactory { ICodeVersions IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/DacStreamsFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/DacStreamsFactory.cs index e93fe712f00586..dba47e0ec676a1 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/DacStreamsFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/DacStreamsFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class DacStreamsFactory : IContractFactory +public sealed class DacStreamsFactory : IContractFactory { IDacStreams IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/DacStreams_1.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/DacStreams_1.cs index 0a6eb4d34de394..8b72aaa4270a22 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/DacStreams_1.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/DacStreams_1.cs @@ -8,7 +8,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal class DacStreams_1 : IDacStreams +internal sealed class DacStreams_1 : IDacStreams { private readonly Target _target; @@ -29,7 +29,7 @@ internal DacStreams_1(Target target) _target = target; } - public virtual string? StringFromEEAddress(TargetPointer address) + public string? StringFromEEAddress(TargetPointer address) { // We use the data subsystem to handle caching results from processing this data var dictionary = _target.ProcessedData.GetOrAdd(0).EEObjectToString; @@ -38,7 +38,7 @@ internal DacStreams_1(Target target) return result; } - internal class DacStreams_1_Data : IData + internal sealed class DacStreams_1_Data : IData { static DacStreams_1_Data IData.Create(Target target, TargetPointer address) => new DacStreams_1_Data(target); diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/EcmaMetadataFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/EcmaMetadataFactory.cs index 029335787f3410..a628ae62ecca20 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/EcmaMetadataFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/EcmaMetadataFactory.cs @@ -6,7 +6,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class EcmaMetadataFactory : IContractFactory +public sealed class EcmaMetadataFactory : IContractFactory { IEcmaMetadata IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/EcmaMetadata_1.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/EcmaMetadata_1.cs index 2bfa70f29c6dcc..d56ea435fdfcf8 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/EcmaMetadata_1.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/EcmaMetadata_1.cs @@ -10,7 +10,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal class EcmaMetadata_1(Target target) : IEcmaMetadata +internal sealed class EcmaMetadata_1(Target target) : IEcmaMetadata { private Dictionary _metadata = new(); @@ -246,7 +246,7 @@ public EcmaMetadataSchema(string metadataVersion, bool largeStringHeap, bool lar public readonly bool VariableSizedColumnsAreAll4BytesLong; } - private class TargetEcmaMetadata + private sealed class TargetEcmaMetadata { public TargetEcmaMetadata(EcmaMetadataSchema schema, TargetSpan[] tables, diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExceptionFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExceptionFactory.cs index 209edd339d6a55..ec7016fd43a88c 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExceptionFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExceptionFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class ExceptionFactory : IContractFactory +public sealed class ExceptionFactory : IContractFactory { IException IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerBase.EEJitManager.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.cs similarity index 95% rename from src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerBase.EEJitManager.cs rename to src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.cs index 4067c714c7eea5..467fff50928167 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerBase.EEJitManager.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.cs @@ -8,9 +8,9 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal partial class ExecutionManagerBase : IExecutionManager +internal partial class ExecutionManagerCore : IExecutionManager { - private class EEJitManager : JitManager + private sealed class EEJitManager : JitManager { private readonly INibbleMap _nibbleMap; public EEJitManager(Target target, INibbleMap nibbleMap) : base(target) diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerBase.ReadyToRunJitManager.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.cs similarity index 98% rename from src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerBase.ReadyToRunJitManager.cs rename to src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.cs index 8390469e1d76c5..386ad015d91093 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerBase.ReadyToRunJitManager.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.cs @@ -8,9 +8,9 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal partial class ExecutionManagerBase : IExecutionManager +internal partial class ExecutionManagerCore : IExecutionManager { - private class ReadyToRunJitManager : JitManager + private sealed class ReadyToRunJitManager : JitManager { private readonly uint _runtimeFunctionSize; private readonly PtrHashMapLookup _hashMap; diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerBase.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs similarity index 97% rename from src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerBase.cs rename to src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs index e28c4b30071cf9..25c52223fd5931 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerBase.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs @@ -8,7 +8,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal partial class ExecutionManagerBase : IExecutionManager +internal sealed partial class ExecutionManagerCore : IExecutionManager where T : INibbleMap { internal readonly Target _target; @@ -20,7 +20,7 @@ internal partial class ExecutionManagerBase : IExecutionManager private readonly EEJitManager _eeJitManager; private readonly ReadyToRunJitManager _r2rJitManager; - public ExecutionManagerBase(Target target, Data.RangeSectionMap topRangeSectionMap) + public ExecutionManagerCore(Target target, Data.RangeSectionMap topRangeSectionMap) { _target = target; _topRangeSectionMap = topRangeSectionMap; @@ -31,7 +31,7 @@ public ExecutionManagerBase(Target target, Data.RangeSectionMap topRangeSectionM } // Note, because of RelativeOffset, this code info is per code pointer, not per method - private class CodeBlock + private sealed class CodeBlock { public TargetCodePointer StartAddress { get; } public TargetPointer MethodDescAddress { get; } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerFactory.cs index e99074a2b810fe..fa54c578a86639 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerFactory.cs @@ -3,7 +3,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class ExecutionManagerFactory : IContractFactory +public sealed class ExecutionManagerFactory : IContractFactory { IExecutionManager IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.cs index c1a8e135b9d438..ce9f6ce9ce5972 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.cs @@ -5,9 +5,16 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class ExecutionManager_1 : ExecutionManagerBase +public sealed class ExecutionManager_1 : IExecutionManager { - public ExecutionManager_1(Target target, Data.RangeSectionMap topRangeSectionMap) : base(target, topRangeSectionMap) + private IExecutionManager _executionManagerCore; + + internal ExecutionManager_1(Target target, Data.RangeSectionMap topRangeSectionMap) { + _executionManagerCore = new ExecutionManagerCore(target, topRangeSectionMap); } + + public CodeBlockHandle? GetCodeBlockHandle(TargetCodePointer ip) => _executionManagerCore.GetCodeBlockHandle(ip); + public TargetPointer GetMethodDesc(CodeBlockHandle codeInfoHandle) => _executionManagerCore.GetMethodDesc(codeInfoHandle); + public TargetCodePointer GetStartAddress(CodeBlockHandle codeInfoHandle) => _executionManagerCore.GetStartAddress(codeInfoHandle); } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.cs index fc0397d82dfbce..a935ca00f0a32b 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.cs @@ -5,9 +5,16 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class ExecutionManager_2 : ExecutionManagerBase +public sealed class ExecutionManager_2 : IExecutionManager { - public ExecutionManager_2(Target target, Data.RangeSectionMap topRangeSectionMap) : base(target, topRangeSectionMap) + private IExecutionManager _executionManagerCore; + + internal ExecutionManager_2(Target target, Data.RangeSectionMap topRangeSectionMap) { + _executionManagerCore = new ExecutionManagerCore(target, topRangeSectionMap); } + + public CodeBlockHandle? GetCodeBlockHandle(TargetCodePointer ip) => _executionManagerCore.GetCodeBlockHandle(ip); + public TargetPointer GetMethodDesc(CodeBlockHandle codeInfoHandle) => _executionManagerCore.GetMethodDesc(codeInfoHandle); + public TargetCodePointer GetStartAddress(CodeBlockHandle codeInfoHandle) => _executionManagerCore.GetStartAddress(codeInfoHandle); } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/Helpers/NibbleMapConstantLookup.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/Helpers/NibbleMapConstantLookup.cs index bb18f4584d8f2c..0f9863b4f7664a 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/Helpers/NibbleMapConstantLookup.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/Helpers/NibbleMapConstantLookup.cs @@ -29,7 +29,7 @@ namespace Microsoft.Diagnostics.DataContractReader.ExecutionManagerHelpers; // In this implementation we may "extend" the lookup period of a function several hundred bytes // if there is not another function following it. -internal class NibbleMapConstantLookup : INibbleMap +internal sealed class NibbleMapConstantLookup : INibbleMap { private readonly Target _target; diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/Helpers/NibbleMapLinearLookup.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/Helpers/NibbleMapLinearLookup.cs index e32d7b2aaf386d..0e323b79125cb4 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/Helpers/NibbleMapLinearLookup.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/Helpers/NibbleMapLinearLookup.cs @@ -55,7 +55,7 @@ namespace Microsoft.Diagnostics.DataContractReader.ExecutionManagerHelpers; // We will then align the map index to the start of the current map unit (map index 8) and move back to the previous map unit (map index 7) // At that point, we scan backwards for non-zero map units. Since there are none, we return null. -internal class NibbleMapLinearLookup : INibbleMap +internal sealed class NibbleMapLinearLookup : INibbleMap { private readonly Target _target; diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/LoaderFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/LoaderFactory.cs index 5c13186b4dce93..6a1f8e96c39e9b 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/LoaderFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/LoaderFactory.cs @@ -6,7 +6,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class LoaderFactory : IContractFactory +public sealed class LoaderFactory : IContractFactory { ILoader IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ObjectFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ObjectFactory.cs index 4949a9f52fd729..d659837c51251e 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ObjectFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ObjectFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class ObjectFactory : IContractFactory +public sealed class ObjectFactory : IContractFactory { IObject IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Object_1.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Object_1.cs index fee163f4329d4b..d35b683f028fb1 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Object_1.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Object_1.cs @@ -88,7 +88,7 @@ public TargetPointer GetArrayData(TargetPointer address, out uint count, out Tar else { // Single-dimensional, zero-based - doesn't have bounds - boundsStart = address + (ulong)arrayTypeInfo.Fields[Data.Array.FieldNames.NumComponents].Offset; + boundsStart = address + (ulong)arrayTypeInfo.Fields[Constants.FieldNames.Array.NumComponents].Offset; lowerBounds = _target.ReadGlobalPointer(Constants.Globals.ArrayBoundsZero); } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PlatformMetadataFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PlatformMetadataFactory.cs index 4c1a1b7b6bc671..438b0a93788f53 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PlatformMetadataFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PlatformMetadataFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class PlatformMetadataFactory : IContractFactory +public sealed class PlatformMetadataFactory : IContractFactory { IPlatformMetadata IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubsFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubsFactory.cs index 0361f57efedfed..b5dca81d5636b6 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubsFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubsFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class PrecodeStubsFactory : IContractFactory +public sealed class PrecodeStubsFactory : IContractFactory { IPrecodeStubs IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_1.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_1.cs index c3249aa5caf02d..4dbb9a9a111ede 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_1.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_1.cs @@ -47,12 +47,12 @@ internal override TargetPointer GetMethodDesc(Target target, Data.PrecodeMachine } } - internal sealed class PInvokeImportPrecode : StubPrecode + public sealed class PInvokeImportPrecode : StubPrecode { internal PInvokeImportPrecode(TargetPointer instrPointer) : base(instrPointer, KnownPrecodeType.PInvokeImport) { } } - internal sealed class FixupPrecode : ValidPrecode + public sealed class FixupPrecode : ValidPrecode { internal FixupPrecode(TargetPointer instrPointer) : base(instrPointer, KnownPrecodeType.Fixup) { } internal override TargetPointer GetMethodDesc(Target target, Data.PrecodeMachineDescriptor precodeMachineDescriptor) @@ -64,7 +64,7 @@ internal override TargetPointer GetMethodDesc(Target target, Data.PrecodeMachine } } - internal sealed class ThisPtrRetBufPrecode : ValidPrecode + public sealed class ThisPtrRetBufPrecode : ValidPrecode { internal ThisPtrRetBufPrecode(TargetPointer instrPointer) : base(instrPointer, KnownPrecodeType.ThisPtrRetBuf) { } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ReJITFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ReJITFactory.cs index 8530eec204ddf4..27572ba805eb37 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ReJITFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ReJITFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class ReJITFactory : IContractFactory +public sealed class ReJITFactory : IContractFactory { IReJIT IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystemFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystemFactory.cs index 30c9e8b4254abb..510eb605555bb4 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystemFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystemFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class RuntimeTypeSystemFactory : IContractFactory +public sealed class RuntimeTypeSystemFactory : IContractFactory { IRuntimeTypeSystem IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.cs index a8c8a9d0ff876b..b6fdbe6e5afb60 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.cs @@ -170,7 +170,7 @@ public ulong SizeOfChunk } - private class InstantiatedMethodDesc : IData + private sealed class InstantiatedMethodDesc : IData { public static InstantiatedMethodDesc Create(Target target, TargetPointer address) => new InstantiatedMethodDesc(target, address); @@ -207,7 +207,7 @@ private InstantiatedMethodDesc(Target target, TargetPointer methodDescPointer) public TypeHandle[] Instantiation { get; } } - private class DynamicMethodDesc : IData + private sealed class DynamicMethodDesc : IData { public static DynamicMethodDesc Create(Target target, TargetPointer address) => new DynamicMethodDesc(target, address); @@ -234,7 +234,7 @@ private DynamicMethodDesc(Target target, TargetPointer methodDescPointer) public bool IsILStub => ExtendedFlags.HasFlag(DynamicMethodDescExtendedFlags.IsILStub); } - private class StoredSigMethodDesc : IData + private sealed class StoredSigMethodDesc : IData { public static StoredSigMethodDesc Create(Target target, TargetPointer address) => new StoredSigMethodDesc(target, address); @@ -408,7 +408,7 @@ public ReadOnlySpan GetInstantiation(TypeHandle typeHandle) return _target.ProcessedData.GetOrAdd(typeHandle.Address).TypeHandles; } - private class TypeInstantiation : IData + private sealed class TypeInstantiation : IData { public static TypeInstantiation Create(Target target, TargetPointer address) => new TypeInstantiation(target, address); @@ -582,7 +582,7 @@ public bool IsFunctionPointer(TypeHandle typeHandle, out ReadOnlySpan + private sealed class FunctionPointerRetAndArgs : IData { public static FunctionPointerRetAndArgs Create(Target target, TargetPointer address) => new FunctionPointerRetAndArgs(target, address); @@ -1026,7 +1026,7 @@ TargetPointer IRuntimeTypeSystem.GetGCStressCodeCopy(MethodDescHandle methodDesc return TargetPointer.Null; } - private class NonValidatedMethodTableQueries : MethodValidation.IMethodTableQueries + private sealed class NonValidatedMethodTableQueries : MethodValidation.IMethodTableQueries { private readonly RuntimeTypeSystem_1 _rts; public NonValidatedMethodTableQueries(RuntimeTypeSystem_1 rts) diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ThreadFactory.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ThreadFactory.cs index 22532289d20935..e3f98013ad3ee9 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ThreadFactory.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ThreadFactory.cs @@ -5,7 +5,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Contracts; -internal sealed class ThreadFactory : IContractFactory +public sealed class ThreadFactory : IContractFactory { IThread IContractFactory.CreateContract(Target target, int version) { diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Array.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Array.cs index 09249b4c0516af..c480e00b7081fa 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Array.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Array.cs @@ -12,13 +12,8 @@ public Array(Target target, TargetPointer address) { Target.TypeInfo type = target.GetTypeInfo(DataType.Array); - NumComponents = target.Read(address + (ulong)type.Fields[FieldNames.NumComponents].Offset); + NumComponents = target.Read(address + (ulong)type.Fields[Constants.FieldNames.Array.NumComponents].Offset); } public uint NumComponents { get; init; } - - internal static class FieldNames - { - internal const string NumComponents = $"m_{nameof(NumComponents)}"; - } } diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DynamicMetadata.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DynamicMetadata.cs index fc1ac8c90963f8..2496c5324e25d4 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DynamicMetadata.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DynamicMetadata.cs @@ -3,7 +3,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Data; -internal class DynamicMetadata : IData +internal sealed class DynamicMetadata : IData { static DynamicMetadata IData.Create(Target target, TargetPointer address) => new DynamicMetadata(target, address); public DynamicMetadata(Target target, TargetPointer address) diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/GenericsDictInfo.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/GenericsDictInfo.cs index 0bc639bba7b7e0..7ece56e8bc139d 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/GenericsDictInfo.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/GenericsDictInfo.cs @@ -3,7 +3,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Data; -internal class GenericsDictInfo : IData +internal sealed class GenericsDictInfo : IData { static GenericsDictInfo IData.Create(Target target, TargetPointer address) => new GenericsDictInfo(target, address); public GenericsDictInfo(Target target, TargetPointer address) diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/TypeDesc.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/TypeDesc.cs index b88809634ed2bc..e46782241e6bbf 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/TypeDesc.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Data/TypeDesc.cs @@ -3,7 +3,7 @@ namespace Microsoft.Diagnostics.DataContractReader.Data; -internal class TypeDesc : IData +internal sealed class TypeDesc : IData { static TypeDesc IData.Create(Target target, TargetPointer address) => new TypeDesc(target, address); public TypeDesc(Target target, TargetPointer address) @@ -15,7 +15,7 @@ public TypeDesc(Target target, TargetPointer address) public uint TypeAndFlags { get; init; } } -internal class ParamTypeDesc : IData +internal sealed class ParamTypeDesc : IData { static ParamTypeDesc IData.Create(Target target, TargetPointer address) => new ParamTypeDesc(target, address); public ParamTypeDesc(Target target, TargetPointer address) @@ -31,7 +31,7 @@ public ParamTypeDesc(Target target, TargetPointer address) public TargetPointer TypeArg { get; init; } } -internal class TypeVarTypeDesc : IData +internal sealed class TypeVarTypeDesc : IData { static TypeVarTypeDesc IData.Create(Target target, TargetPointer address) => new TypeVarTypeDesc(target, address); public TypeVarTypeDesc(Target target, TargetPointer address) @@ -50,7 +50,7 @@ public TypeVarTypeDesc(Target target, TargetPointer address) public uint Token { get; init; } } -internal class FnPtrTypeDesc : IData +internal sealed class FnPtrTypeDesc : IData { static FnPtrTypeDesc IData.Create(Target target, TargetPointer address) => new FnPtrTypeDesc(target, address); public FnPtrTypeDesc(Target target, TargetPointer address) diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Microsoft.Diagnostics.DataContractReader.Contracts.csproj b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Microsoft.Diagnostics.DataContractReader.Contracts.csproj index 70748b48d2bc35..de4256093c7601 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Microsoft.Diagnostics.DataContractReader.Contracts.csproj +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/Microsoft.Diagnostics.DataContractReader.Contracts.csproj @@ -13,9 +13,6 @@ - - - diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodValidation.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodValidation.cs index e0a463d9eb78dd..75420399c5bbf0 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodValidation.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodValidation.cs @@ -11,7 +11,7 @@ namespace Microsoft.Diagnostics.DataContractReader.RuntimeTypeSystemHelpers; // to an unmapped memory region. // All types here have not been validated as actually representing a MethodTable, EEClass, etc. // All checks are unsafe and may throw if we access an invalid address in target memory. -internal class MethodValidation +internal sealed class MethodValidation { internal interface IMethodTableQueries { @@ -19,7 +19,7 @@ internal interface IMethodTableQueries bool SlotIsVtableSlot(TargetPointer methodTablePointer, uint slot); } - private class NIEMethodTableQueries : IMethodTableQueries + private sealed class NIEMethodTableQueries : IMethodTableQueries { public TargetPointer GetAddressOfMethodTableSlot(TargetPointer methodTablePointer, uint slot) => throw new NotImplementedException(); diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/TypeValidation.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/TypeValidation.cs index 25135dce7385b3..da493c6b07e7c1 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/TypeValidation.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/TypeValidation.cs @@ -6,7 +6,7 @@ namespace Microsoft.Diagnostics.DataContractReader.RuntimeTypeSystemHelpers; -internal class TypeValidation +internal sealed class TypeValidation { private readonly Target _target; diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader/ContractDescriptorTarget.cs b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader/ContractDescriptorTarget.cs index 668c9c988d1d4d..d7901496099ebc 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader/ContractDescriptorTarget.cs +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader/ContractDescriptorTarget.cs @@ -21,7 +21,7 @@ namespace Microsoft.Diagnostics.DataContractReader; /// these are throwing APIs. Any callers at the boundaries (for example, unmanaged entry points, COM) /// should handle any exceptions. /// -internal sealed unsafe class ContractDescriptorTarget : Target +public sealed unsafe class ContractDescriptorTarget : Target { private const int StackAllocByteThreshold = 1024; @@ -481,7 +481,7 @@ internal bool TryGetContractVersion(string contractName, out int version) /// Store of addresses that have already been read into corresponding data models. /// This is simply used to avoid re-processing data on every request. /// - internal sealed class DataCache : Target.IDataCache + public sealed class DataCache : Target.IDataCache { private readonly ContractDescriptorTarget _target; private readonly Dictionary<(ulong, Type), object?> _readDataByAddress = []; diff --git a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader/Microsoft.Diagnostics.DataContractReader.csproj b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader/Microsoft.Diagnostics.DataContractReader.csproj index b0868e188bb61a..a51ccbb2d1e8f9 100644 --- a/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader/Microsoft.Diagnostics.DataContractReader.csproj +++ b/src/native/managed/cdacreader/Microsoft.Diagnostics.DataContractReader/Microsoft.Diagnostics.DataContractReader.csproj @@ -14,11 +14,6 @@ - - - - - diff --git a/src/native/managed/cdacreader/src/Legacy/SOSDacImpl.cs b/src/native/managed/cdacreader/src/Legacy/SOSDacImpl.cs index e4367f004b0d91..d3bf6132a19068 100644 --- a/src/native/managed/cdacreader/src/Legacy/SOSDacImpl.cs +++ b/src/native/managed/cdacreader/src/Legacy/SOSDacImpl.cs @@ -792,7 +792,7 @@ int ISOSDacInterface.GetModuleData(ulong moduleAddr, DacpModuleData* data) data->ThunkHeap = contract.GetThunkHeap(handle); Target.TypeInfo lookupMapTypeInfo = _target.GetTypeInfo(DataType.ModuleLookupMap); - ulong tableDataOffset = (ulong)lookupMapTypeInfo.Fields[nameof(Data.ModuleLookupMap.TableData)].Offset; + ulong tableDataOffset = (ulong)lookupMapTypeInfo.Fields[Constants.FieldNames.ModuleLookupMap.TableData].Offset; Contracts.ModuleLookupTables tables = contract.GetLookupTables(handle); data->FieldDefToDescMap = _target.ReadPointer(tables.FieldDefToDesc + tableDataOffset); @@ -900,7 +900,7 @@ int ISOSDacInterface.GetObjectData(ulong objAddr, DacpObjectData* data) data->MethodTable = mt; data->Size = runtimeTypeSystemContract.GetBaseSize(handle); - data->dwComponentSize = runtimeTypeSystemContract.GetComponentSize(handle); ; + data->dwComponentSize = runtimeTypeSystemContract.GetComponentSize(handle); if (runtimeTypeSystemContract.IsFreeObjectMethodTable(handle)) { @@ -909,7 +909,7 @@ int ISOSDacInterface.GetObjectData(ulong objAddr, DacpObjectData* data) // Free objects have their component count explicitly set at the same offset as that for arrays // Update the size to include those components Target.TypeInfo arrayTypeInfo = _target.GetTypeInfo(DataType.Array); - ulong numComponentsOffset = (ulong)_target.GetTypeInfo(DataType.Array).Fields[Data.Array.FieldNames.NumComponents].Offset; + ulong numComponentsOffset = (ulong)_target.GetTypeInfo(DataType.Array).Fields[Constants.FieldNames.Array.NumComponents].Offset; data->Size += _target.Read(objAddr + numComponentsOffset) * data->dwComponentSize; } else if (mt == _stringMethodTable.Value) diff --git a/src/native/managed/cdacreader/src/cdacreader.csproj b/src/native/managed/cdacreader/src/cdacreader.csproj index 2af9e9281927c3..28249236574d8a 100644 --- a/src/native/managed/cdacreader/src/cdacreader.csproj +++ b/src/native/managed/cdacreader/src/cdacreader.csproj @@ -20,6 +20,7 @@ Common\Interop\Windows\Interop.BOOL.cs +