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
+