diff --git a/src/coreclr/tools/Common/Compiler/Dataflow/EcmaExtensions.cs b/src/coreclr/tools/Common/Compiler/Dataflow/EcmaExtensions.cs index dca04632ae6bfc..2b539e0f31e3bd 100644 --- a/src/coreclr/tools/Common/Compiler/Dataflow/EcmaExtensions.cs +++ b/src/coreclr/tools/Common/Compiler/Dataflow/EcmaExtensions.cs @@ -61,7 +61,7 @@ public static PropertyPseudoDesc GetProperty(this MetadataType mdType, string na } } - mdType = mdType.MetadataBaseType; + mdType = mdType.BaseType; if (mdType != null) return GetProperty(mdType, name, signature); diff --git a/src/coreclr/tools/Common/Compiler/EventPseudoDesc.cs b/src/coreclr/tools/Common/Compiler/EventPseudoDesc.cs index 7adc1c6195978b..1bfee2d0196f45 100644 --- a/src/coreclr/tools/Common/Compiler/EventPseudoDesc.cs +++ b/src/coreclr/tools/Common/Compiler/EventPseudoDesc.cs @@ -20,30 +20,30 @@ public class EventPseudoDesc : TypeSystemEntity private EventDefinition Definition => _type.MetadataReader.GetEventDefinition(_handle); - public MethodDesc AddMethod + public EcmaMethod AddMethod { get { MethodDefinitionHandle adder = Definition.GetAccessors().Adder; - return adder.IsNil ? null : _type.EcmaModule.GetMethod(adder); + return adder.IsNil ? null : _type.Module.GetMethod(adder); } } - public MethodDesc RemoveMethod + public EcmaMethod RemoveMethod { get { MethodDefinitionHandle setter = Definition.GetAccessors().Remover; - return setter.IsNil ? null : _type.EcmaModule.GetMethod(setter); + return setter.IsNil ? null : _type.Module.GetMethod(setter); } } - public MethodDesc RaiseMethod + public EcmaMethod RaiseMethod { get { MethodDefinitionHandle raiser = Definition.GetAccessors().Raiser; - return raiser.IsNil ? null : _type.EcmaModule.GetMethod(raiser); + return raiser.IsNil ? null : _type.Module.GetMethod(raiser); } } @@ -55,7 +55,7 @@ public CustomAttributeHandleCollection GetCustomAttributes } } - public MetadataType OwningType + public EcmaType OwningType { get { diff --git a/src/coreclr/tools/Common/Compiler/GenericCycleDetection/GraphBuilder.cs b/src/coreclr/tools/Common/Compiler/GenericCycleDetection/GraphBuilder.cs index 8ac16e3bb3c4c7..c29e48b03a5220 100644 --- a/src/coreclr/tools/Common/Compiler/GenericCycleDetection/GraphBuilder.cs +++ b/src/coreclr/tools/Common/Compiler/GenericCycleDetection/GraphBuilder.cs @@ -174,7 +174,7 @@ public GraphBuilder(EcmaModule assembly) { try { - var ecmaType = (EcmaType)assembly.GetObject(typeHandle); + var ecmaType = assembly.GetType(typeHandle); WalkAncestorTypes(ecmaType); } catch (TypeSystemException) @@ -198,7 +198,7 @@ public GraphBuilder(EcmaModule assembly) { try { - var ecmaMethod = (EcmaMethod)assembly.GetObject(methodHandle); + var ecmaMethod = assembly.GetMethod(methodHandle); WalkMethod(ecmaMethod); if (ecmaMethod.IsVirtual) @@ -218,7 +218,7 @@ public GraphBuilder(EcmaModule assembly) { try { - var ecmaField = (EcmaField)assembly.GetObject(fieldHandle); + var ecmaField = assembly.GetField(fieldHandle); if (typeContext.IsNull) { diff --git a/src/coreclr/tools/Common/Compiler/GenericCycleDetection/ModuleCycleInfo.cs b/src/coreclr/tools/Common/Compiler/GenericCycleDetection/ModuleCycleInfo.cs index cc64a7517b9672..5f08fc9849eff5 100644 --- a/src/coreclr/tools/Common/Compiler/GenericCycleDetection/ModuleCycleInfo.cs +++ b/src/coreclr/tools/Common/Compiler/GenericCycleDetection/ModuleCycleInfo.cs @@ -217,7 +217,7 @@ public bool IsDeepPossiblyCyclicInstantiation(MethodDesc method) private bool FormsCycle(TypeSystemEntity entity, out ModuleCycleInfo cycleInfo) { - EcmaModule ownerModule = (entity as EcmaType)?.EcmaModule ?? (entity as EcmaMethod)?.Module; + EcmaModule ownerModule = (entity as EcmaType)?.Module ?? (entity as EcmaMethod)?.Module; if (ownerModule != null) { cycleInfo = _hashtable.GetOrCreateValue(ownerModule); diff --git a/src/coreclr/tools/Common/Compiler/InstructionSetSupport.cs b/src/coreclr/tools/Common/Compiler/InstructionSetSupport.cs index db31a5880f8a12..a740005096f3ba 100644 --- a/src/coreclr/tools/Common/Compiler/InstructionSetSupport.cs +++ b/src/coreclr/tools/Common/Compiler/InstructionSetSupport.cs @@ -64,7 +64,7 @@ public static string GetHardwareIntrinsicId(TargetArchitecture architecture, Typ if (potentialType.Name.SequenceEqual("X64"u8) || potentialType.Name.SequenceEqual("Arm64"u8)) { if (architecture is TargetArchitecture.X64 or TargetArchitecture.ARM64) - potentialType = (MetadataType)potentialType.ContainingType; + potentialType = potentialType.ContainingType; else return ""; } diff --git a/src/coreclr/tools/Common/Compiler/NativeAotNameMangler.cs b/src/coreclr/tools/Common/Compiler/NativeAotNameMangler.cs index e37407e35fe66e..2a8807f90fb3bf 100644 --- a/src/coreclr/tools/Common/Compiler/NativeAotNameMangler.cs +++ b/src/coreclr/tools/Common/Compiler/NativeAotNameMangler.cs @@ -170,7 +170,7 @@ private string ComputeMangledTypeName(TypeDesc type) { if (type is EcmaType ecmaType) { - string assemblyName = ((EcmaAssembly)ecmaType.EcmaModule).GetName().Name; + string assemblyName = ((EcmaAssembly)ecmaType.Module).GetName().Name; bool isSystemPrivate = assemblyName.StartsWith("System.Private."); // Abbreviate System.Private to S.P. This might conflict with user defined assembly names, @@ -190,7 +190,7 @@ private string ComputeMangledTypeName(TypeDesc type) if (!_mangledTypeNames.ContainsKey(type)) { - foreach (MetadataType t in ecmaType.EcmaModule.GetAllTypes()) + foreach (MetadataType t in ecmaType.Module.GetAllTypes()) { string name = t.GetFullName(); diff --git a/src/coreclr/tools/Common/Compiler/PropertyPseudoDesc.cs b/src/coreclr/tools/Common/Compiler/PropertyPseudoDesc.cs index c460ba67772c06..2c1b021e93e02c 100644 --- a/src/coreclr/tools/Common/Compiler/PropertyPseudoDesc.cs +++ b/src/coreclr/tools/Common/Compiler/PropertyPseudoDesc.cs @@ -21,24 +21,24 @@ public class PropertyPseudoDesc : TypeSystemEntity private PropertyDefinition Definition => _type.MetadataReader.GetPropertyDefinition(_handle); public PropertySignature Signature => - new EcmaSignatureParser(_type.EcmaModule, _type.MetadataReader.GetBlobReader(Definition.Signature), NotFoundBehavior.Throw) + new EcmaSignatureParser(_type.Module, _type.MetadataReader.GetBlobReader(Definition.Signature), NotFoundBehavior.Throw) .ParsePropertySignature(); - public MethodDesc GetMethod + public EcmaMethod GetMethod { get { MethodDefinitionHandle getter = Definition.GetAccessors().Getter; - return getter.IsNil ? null : _type.EcmaModule.GetMethod(getter); + return getter.IsNil ? null : _type.Module.GetMethod(getter); } } - public MethodDesc SetMethod + public EcmaMethod SetMethod { get { MethodDefinitionHandle setter = Definition.GetAccessors().Setter; - return setter.IsNil ? null : _type.EcmaModule.GetMethod(setter); + return setter.IsNil ? null : _type.Module.GetMethod(setter); } } @@ -50,7 +50,7 @@ public CustomAttributeHandleCollection GetCustomAttributes } } - public MetadataType OwningType + public EcmaType OwningType { get { diff --git a/src/coreclr/tools/Common/Compiler/PseudoDescExtensions.cs b/src/coreclr/tools/Common/Compiler/PseudoDescExtensions.cs index 025b94d8fe1412..99ecae4d6acbf3 100644 --- a/src/coreclr/tools/Common/Compiler/PseudoDescExtensions.cs +++ b/src/coreclr/tools/Common/Compiler/PseudoDescExtensions.cs @@ -15,7 +15,7 @@ public static PropertyPseudoDesc GetPropertyForAccessor(this MethodDesc accessor if (!accessor.IsSpecialName || accessor.GetTypicalMethodDefinition() is not EcmaMethod ecmaAccessor) return null; - var type = (EcmaType)ecmaAccessor.OwningType; + var type = ecmaAccessor.OwningType; var reader = type.MetadataReader; foreach (var propertyHandle in reader.GetTypeDefinition(type.Handle).GetProperties()) { @@ -35,7 +35,7 @@ public static EventPseudoDesc GetEventForAccessor(this MethodDesc accessor) if (!accessor.IsSpecialName || accessor.GetTypicalMethodDefinition() is not EcmaMethod ecmaAccessor) return null; - var type = (EcmaType)ecmaAccessor.OwningType; + var type = ecmaAccessor.OwningType; var reader = type.MetadataReader; foreach (var eventHandle in reader.GetTypeDefinition(type.Handle).GetEvents()) { diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs b/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs index c0bd2516d730bf..514e055929460e 100644 --- a/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs +++ b/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs @@ -2334,7 +2334,7 @@ private int GatherClassGCLayout(MetadataType type, byte* gcPtrs) { int result = 0; - if (type.MetadataBaseType is { ContainsGCPointers: true } baseType) + if (type.BaseType is { ContainsGCPointers: true } baseType) result += GatherClassGCLayout(baseType, gcPtrs); bool isInlineArray = type.IsInlineArray; @@ -3443,7 +3443,7 @@ private static string getMethodNameFromMetadataImpl(MethodDesc method, out strin if (method.GetTypicalMethodDefinition() is EcmaMethod ecmaMethod) { - EcmaType owningType = (EcmaType)ecmaMethod.OwningType; + EcmaType owningType = ecmaMethod.OwningType; var reader = owningType.MetadataReader; if (className != null) @@ -3456,7 +3456,7 @@ private static string getMethodNameFromMetadataImpl(MethodDesc method, out strin EcmaType containingType = owningType; for (nuint i = 0; i < maxEnclosingClassNames; i++) { - containingType = containingType.ContainingType as EcmaType; + containingType = containingType.ContainingType; if (containingType == null) break; diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoInstructionSet.cs b/src/coreclr/tools/Common/JitInterface/CorInfoInstructionSet.cs index 0837d5347f149b..c6958ca2ee0387 100644 --- a/src/coreclr/tools/Common/JitInterface/CorInfoInstructionSet.cs +++ b/src/coreclr/tools/Common/JitInterface/CorInfoInstructionSet.cs @@ -1311,7 +1311,7 @@ public static InstructionSet LookupPlatformIntrinsicInstructionSet(TargetArchite string nestedTypeName = null; while (metadataType.ContainingType != null) { - var enclosingType = (MetadataType)metadataType.ContainingType; + var enclosingType = metadataType.ContainingType; namespaceName = enclosingType.GetNamespace(); nestedTypeName = nestedTypeName is null ? metadataType.GetName() : $"{metadataType.GetName()}_{nestedTypeName}"; typeName = enclosingType.GetName(); diff --git a/src/coreclr/tools/Common/JitInterface/ThunkGenerator/InstructionSetGenerator.cs b/src/coreclr/tools/Common/JitInterface/ThunkGenerator/InstructionSetGenerator.cs index 4afe06497bfa5b..2b2e85e0a68da6 100644 --- a/src/coreclr/tools/Common/JitInterface/ThunkGenerator/InstructionSetGenerator.cs +++ b/src/coreclr/tools/Common/JitInterface/ThunkGenerator/InstructionSetGenerator.cs @@ -808,7 +808,7 @@ public static InstructionSet LookupPlatformIntrinsicInstructionSet(TargetArchite string nestedTypeName = null; while (metadataType.ContainingType != null) { - var enclosingType = (MetadataType)metadataType.ContainingType; + var enclosingType = metadataType.ContainingType; namespaceName = enclosingType.GetNamespace(); nestedTypeName = nestedTypeName is null ? metadataType.GetName() : $""{metadataType.GetName()}_{nestedTypeName}""; typeName = enclosingType.GetName(); diff --git a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs index 5e468a1353432c..529e548c5d6356 100644 --- a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs @@ -17,8 +17,6 @@ protected override MethodImplRecord[] ComputeVirtualMethodImplsForType() return Array.Empty(); } - public override MetadataType MetadataBaseType => (MetadataType)BaseType; - public override DefType[] ExplicitlyImplementedInterfaces => Array.Empty(); public override bool IsAbstract => false; diff --git a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.cs b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.cs index 722978648f68b0..c8b40489d24b99 100644 --- a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.cs +++ b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.cs @@ -8,6 +8,10 @@ using Debug = System.Diagnostics.Debug; +#if TYPE_LOADER_IMPLEMENTATION +using MetadataType = Internal.TypeSystem.DefType; +#endif + namespace Internal.TypeSystem { /// @@ -51,7 +55,7 @@ public sealed override TypeSystemContext Context } } - public override DefType ContainingType => null; + public override MetadataType ContainingType => null; } /// @@ -87,11 +91,11 @@ public CanonType(TypeSystemContext context) // consumer-specific initialization. partial void Initialize(); - public override DefType BaseType + public override MetadataType BaseType { get { - return Context.GetWellKnownType(WellKnownType.Object); + return (MetadataType)Context.GetWellKnownType(WellKnownType.Object); } } @@ -171,12 +175,12 @@ public UniversalCanonType(TypeSystemContext context) // consumer-specific initialization. partial void Initialize(); - public override DefType BaseType + public override MetadataType BaseType { get { // UniversalCanon is "a struct of indeterminate size and GC layout" - return Context.GetWellKnownType(WellKnownType.ValueType); + return (MetadataType)Context.GetWellKnownType(WellKnownType.ValueType); } } diff --git a/src/coreclr/tools/Common/TypeSystem/Common/FieldDesc.cs b/src/coreclr/tools/Common/TypeSystem/Common/FieldDesc.cs index 72eda70638052f..4264363848e277 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/FieldDesc.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/FieldDesc.cs @@ -6,6 +6,10 @@ using Debug = System.Diagnostics.Debug; +#if TYPE_LOADER_IMPLEMENTATION +using MetadataType = Internal.TypeSystem.DefType; +#endif + namespace Internal.TypeSystem { public abstract partial class FieldDesc : TypeSystemEntity @@ -45,7 +49,7 @@ public string GetName() ); } - public abstract DefType OwningType + public abstract MetadataType OwningType { get; } diff --git a/src/coreclr/tools/Common/TypeSystem/Common/FieldForInstantiatedType.cs b/src/coreclr/tools/Common/TypeSystem/Common/FieldForInstantiatedType.cs index ce1440710a97a1..b1345f1184b3a3 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/FieldForInstantiatedType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/FieldForInstantiatedType.cs @@ -4,6 +4,10 @@ using System; using Debug = System.Diagnostics.Debug; +#if TYPE_LOADER_IMPLEMENTATION +using MetadataType = Internal.TypeSystem.DefType; +#endif + namespace Internal.TypeSystem { public sealed partial class FieldForInstantiatedType : FieldDesc @@ -26,7 +30,7 @@ public override TypeSystemContext Context } } - public override DefType OwningType + public override MetadataType OwningType { get { diff --git a/src/coreclr/tools/Common/TypeSystem/Common/ImpliedRepeatedFieldDesc.cs b/src/coreclr/tools/Common/TypeSystem/Common/ImpliedRepeatedFieldDesc.cs index ff263d1a6a25b6..411cef3264117d 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/ImpliedRepeatedFieldDesc.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/ImpliedRepeatedFieldDesc.cs @@ -9,14 +9,14 @@ public sealed partial class ImpliedRepeatedFieldDesc : FieldDesc { private readonly FieldDesc _underlyingFieldDesc; - public ImpliedRepeatedFieldDesc(DefType owningType, FieldDesc underlyingFieldDesc, int fieldIndex) + public ImpliedRepeatedFieldDesc(MetadataType owningType, FieldDesc underlyingFieldDesc, int fieldIndex) { OwningType = owningType; _underlyingFieldDesc = underlyingFieldDesc; FieldIndex = fieldIndex; } - public override DefType OwningType { get; } + public override MetadataType OwningType { get; } public override TypeDesc FieldType => _underlyingFieldDesc.FieldType; diff --git a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs index 296b8d2589fd36..f4198c3595d531 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs @@ -8,16 +8,6 @@ namespace Internal.TypeSystem { public sealed partial class InstantiatedType : MetadataType { - public override MetadataType MetadataBaseType - { - get - { - if (_baseType == this) - return InitializeBaseType(); - return _baseType; - } - } - // Properties that are passed through from the type definition public override ClassLayoutMetadata GetClassLayout() { diff --git a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.cs b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.cs index c5ad763b438f07..5e11675abcefb9 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.cs @@ -69,7 +69,7 @@ private MetadataType InitializeBaseType() return (_baseType = (uninst != null) ? (MetadataType)uninst.InstantiateSignature(_instantiation, default(Instantiation)) : null); } - public override DefType BaseType + public override MetadataType BaseType { get { @@ -297,7 +297,7 @@ public override TypeDesc GetTypeDefinition() return _typeDef; } - public override DefType ContainingType + public override MetadataType ContainingType { get { diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs index 355c6629fa6286..a865863e81185e 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs @@ -72,7 +72,7 @@ public override ComputedInstanceFieldLayout ComputeInstanceLayout(DefType defTyp ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); } - MetadataType baseType = type.MetadataBaseType; + MetadataType baseType = type.BaseType; if (!baseType.IsObject && baseType.IsAutoLayout) { ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs index 2d690eec8c91c6..340cd82cac7fc1 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs @@ -69,13 +69,8 @@ public virtual bool IsModuleType /// public abstract ModuleDesc Module { get; } - /// - /// Same as , but the result is a MetadataType (avoids casting). - /// - public abstract MetadataType MetadataBaseType { get; } - - // Make sure children remember to override both MetadataBaseType and BaseType. - public abstract override DefType BaseType { get; } + /// + public abstract override MetadataType BaseType { get; } /// /// If true, the type cannot be used as a base type of any other type. @@ -92,7 +87,7 @@ public virtual bool IsModuleType /// public abstract bool HasCustomAttribute(string attributeNamespace, string attributeName); - public abstract override DefType ContainingType { get; } + public abstract override MetadataType ContainingType { get; } /// /// Get all of the types nested in this type. diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataVirtualMethodAlgorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataVirtualMethodAlgorithm.cs index 49fb0827d7165c..50eafd7d0b50bc 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataVirtualMethodAlgorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataVirtualMethodAlgorithm.cs @@ -425,7 +425,7 @@ private static MethodDesc FindNameSigOverrideForVirtualMethod(MethodDesc targetM return nameSigOverride; } - currentType = currentType.MetadataBaseType; + currentType = currentType.BaseType; } return null; @@ -506,7 +506,7 @@ private static void FindBaseUnificationGroup(MetadataType currentType, Unificati } MethodDesc nameSigMatchMethod = FindMatchingVirtualMethodOnTypeByNameAndSigWithSlotCheck(unificationGroup.DefiningMethod, currentType, reverseMethodSearch: true); - MetadataType baseType = currentType.MetadataBaseType; + MetadataType baseType = currentType.BaseType; // Unless the current type has a name/sig match for the group, look to the base type to define the unification group further if ((nameSigMatchMethod == null) && (baseType != null)) @@ -707,7 +707,7 @@ private static MethodDesc ResolveInterfaceMethodToVirtualMethodOnType(MethodDesc // If interface is explicitly defined on a type, search for a name/sig match. bool foundExplicitInterface = IsInterfaceExplicitlyImplementedOnType(currentType, interfaceType); - MetadataType baseType = currentType.MetadataBaseType; + MetadataType baseType = currentType.BaseType; if (foundExplicitInterface) { @@ -813,7 +813,7 @@ private static MethodDesc ResolveInterfaceMethodToVirtualMethodOnTypeRecursive(M if (currentTypeInterfaceResolution != null) return currentTypeInterfaceResolution; - currentType = currentType.MetadataBaseType; + currentType = currentType.BaseType; } } @@ -834,7 +834,7 @@ private static MethodDesc FindNameSigOverrideForInterfaceMethodRecursive(MethodD return FindSlotDefiningMethodForVirtualMethod(nameSigOverride); } - currentType = currentType.MetadataBaseType; + currentType = currentType.BaseType; } } @@ -988,7 +988,7 @@ public static IEnumerable EnumAllVirtualSlots(MetadataType type) } } - type = type.MetadataBaseType; + type = type.BaseType; } while (type != null); } } @@ -1007,7 +1007,7 @@ public static MethodDesc ResolveInterfaceMethodToStaticVirtualMethodOnType(Metho return null; // Search for match on a per-level in the type hierarchy - for (MetadataType typeToCheck = currentType; typeToCheck != null; typeToCheck = typeToCheck.MetadataBaseType) + for (MetadataType typeToCheck = currentType; typeToCheck != null; typeToCheck = typeToCheck.BaseType) { MethodDesc resolvedMethodOnType = TryResolveVirtualStaticMethodOnThisType(typeToCheck, interfaceMethod); if (resolvedMethodOnType != null) @@ -1029,7 +1029,7 @@ public static MethodDesc ResolveVariantInterfaceMethodToStaticVirtualMethodOnTyp TypeDesc interfaceType = interfaceMethod.OwningType; // Search for match on a per-level in the type hierarchy - for (MetadataType typeToCheck = currentType; typeToCheck != null; typeToCheck = typeToCheck.MetadataBaseType) + for (MetadataType typeToCheck = currentType; typeToCheck != null; typeToCheck = typeToCheck.BaseType) { MethodDesc resolvedMethodOnType = TryResolveVirtualStaticMethodOnThisType(typeToCheck, interfaceMethod); if (resolvedMethodOnType != null) diff --git a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs index 6db81bceeb7257..e4d3c24bbf4a0e 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs @@ -109,15 +109,13 @@ public override IEnumerable GetFields() public override ModuleDesc Module => MetadataType.Module; - public override MetadataType MetadataBaseType => MetadataType.MetadataBaseType; - - public override DefType BaseType => MetadataType.BaseType; + public override MetadataType BaseType => MetadataType.BaseType; public override bool IsSealed => true; public override bool IsAbstract => false; - public override DefType ContainingType => MetadataType.ContainingType; + public override MetadataType ContainingType => MetadataType.ContainingType; public override PInvokeStringFormat PInvokeStringFormat => MetadataType.PInvokeStringFormat; diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaField.Sorting.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaField.Sorting.cs index 5b3dd3200f1ba4..61530afb1e7311 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaField.Sorting.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaField.Sorting.cs @@ -14,8 +14,8 @@ protected internal override int CompareToImpl(FieldDesc other, TypeSystemCompare { var otherField = (EcmaField)other; - EcmaModule module = _type.EcmaModule; - EcmaModule otherModule = otherField._type.EcmaModule; + EcmaModule module = _type.Module; + EcmaModule otherModule = otherField._type.Module; int result = module.MetadataReader.GetToken(_handle) - otherModule.MetadataReader.GetToken(otherField._handle); if (result != 0) diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaField.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaField.cs index 79a35f033d2011..470ac48552ffae 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaField.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaField.cs @@ -61,7 +61,7 @@ public override TypeSystemContext Context } } - public override DefType OwningType + public override EcmaType OwningType { get { @@ -73,7 +73,7 @@ public EcmaModule Module { get { - return _type.EcmaModule; + return _type.Module; } } @@ -293,7 +293,7 @@ public override MarshalAsDescriptor GetMarshalAsDescriptor() if ((definition.Attributes & FieldAttributes.HasFieldMarshal) != 0) { BlobReader marshalAsReader = reader.GetBlobReader(definition.GetMarshallingDescriptor()); - EcmaSignatureParser parser = new EcmaSignatureParser(_type.EcmaModule, marshalAsReader, NotFoundBehavior.Throw); + EcmaSignatureParser parser = new EcmaSignatureParser(_type.Module, marshalAsReader, NotFoundBehavior.Throw); return parser.ParseMarshalAsDescriptor(); } diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaMethod.Sorting.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaMethod.Sorting.cs index 3ad587d76bb6ac..41a3c133be81f6 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaMethod.Sorting.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaMethod.Sorting.cs @@ -14,8 +14,8 @@ protected internal override int CompareToImpl(MethodDesc other, TypeSystemCompar { var otherMethod = (EcmaMethod)other; - EcmaModule module = _type.EcmaModule; - EcmaModule otherModule = otherMethod._type.EcmaModule; + EcmaModule module = _type.Module; + EcmaModule otherModule = otherMethod._type.Module; // Sort by module in preference to by token. This will place methods of the same type near each other // even when working with several modules diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaMethod.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaMethod.cs index 0decf370cfe759..28cb1192ea4889 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaMethod.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaMethod.cs @@ -66,7 +66,7 @@ public override TypeSystemContext Context } } - public override TypeDesc OwningType + public override EcmaType OwningType { get { @@ -98,7 +98,7 @@ public EcmaModule Module { get { - return _type.EcmaModule; + return _type.Module; } } @@ -517,7 +517,7 @@ private MethodImportAttributes GetImportAttributesFromBestFitMappingAttribute(Cu { CustomAttribute attribute = reader.GetCustomAttribute(attributeHandle); CustomAttributeValue decoded = attribute.DecodeValue( - new CustomAttributeTypeProvider(_type.EcmaModule)); + new CustomAttributeTypeProvider(_type.Module)); if (decoded.FixedArguments.Length != 1 || !(decoded.FixedArguments[0].Value is bool)) ThrowHelper.ThrowBadImageFormatException(); @@ -581,5 +581,9 @@ private MarshalAsDescriptor GetMarshalAsDescriptor(Parameter parameter) } return null; } + + public override EcmaMethod GetMethodDefinition() => this; + + public override EcmaMethod GetTypicalMethodDefinition() => this; } } diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaModule.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaModule.cs index e8b1d352542ffc..dfa286a3bd2011 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaModule.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaModule.cs @@ -101,7 +101,7 @@ protected override IEntityHandleObject CreateValueFromKey(EntityHandle handle) { MethodDefinitionHandle methodDefinitionHandle = (MethodDefinitionHandle)handle; TypeDefinitionHandle typeDefinitionHandle = _module._metadataReader.GetMethodDefinition(methodDefinitionHandle).GetDeclaringType(); - EcmaType type = (EcmaType)_module.GetObject(typeDefinitionHandle, NotFoundBehavior.Throw); + EcmaType type = _module.GetType(typeDefinitionHandle); item = new EcmaMethod(type, methodDefinitionHandle); } break; @@ -110,7 +110,7 @@ protected override IEntityHandleObject CreateValueFromKey(EntityHandle handle) { FieldDefinitionHandle fieldDefinitionHandle = (FieldDefinitionHandle)handle; TypeDefinitionHandle typeDefinitionHandle = _module._metadataReader.GetFieldDefinition(fieldDefinitionHandle).GetDeclaringType(); - EcmaType type = (EcmaType)_module.GetObject(typeDefinitionHandle, NotFoundBehavior.Throw); + EcmaType type = _module.GetType(typeDefinitionHandle); item = new EcmaField(type, fieldDefinitionHandle); } break; @@ -458,6 +458,11 @@ public TypeDesc GetType(EntityHandle handle) return type; } + public EcmaType GetType(TypeDefinitionHandle handle) + { + return (EcmaType)GetType((EntityHandle)handle); + } + public MethodDesc GetMethod(EntityHandle handle) { MethodDesc method = GetObject(handle, NotFoundBehavior.Throw) as MethodDesc; @@ -466,6 +471,11 @@ public MethodDesc GetMethod(EntityHandle handle) return method; } + public EcmaMethod GetMethod(MethodDefinitionHandle handle) + { + return (EcmaMethod)GetMethod((EntityHandle)handle); + } + public FieldDesc GetField(EntityHandle handle) { FieldDesc field = GetObject(handle, NotFoundBehavior.Throw) as FieldDesc; @@ -474,6 +484,11 @@ public FieldDesc GetField(EntityHandle handle) return field; } + public EcmaField GetField(FieldDefinitionHandle handle) + { + return (EcmaField)GetField((EntityHandle)handle); + } + internal EcmaField GetField(FieldDefinitionHandle handle, EcmaType owningType) { if (!_resolvedTokens.TryGetValue(handle, out IEntityHandleObject result)) @@ -738,21 +753,21 @@ private object ResolveExportedType(ExportedTypeHandle handle) } } - public sealed override IEnumerable GetAllTypes() + public sealed override IEnumerable GetAllTypes() { foreach (var typeDefinitionHandle in _metadataReader.TypeDefinitions) { - yield return (MetadataType)GetType(typeDefinitionHandle); + yield return GetType(typeDefinitionHandle); } } - public sealed override MetadataType GetGlobalModuleType() + public sealed override EcmaType GetGlobalModuleType() { int typeDefinitionsCount = _metadataReader.TypeDefinitions.Count; if (typeDefinitionsCount == 0) return null; - return (MetadataType)GetType(MetadataTokens.EntityHandle(0x02000001 /* COR_GLOBAL_PARENT_TOKEN */)); + return (EcmaType)GetType(MetadataTokens.EntityHandle(0x02000001 /* COR_GLOBAL_PARENT_TOKEN */)); } public string GetUserString(UserStringHandle userStringHandle) diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.TypeEquivalence.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.TypeEquivalence.cs index 9a222bd8180456..9f7cef60e10c0f 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.TypeEquivalence.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.TypeEquivalence.cs @@ -28,7 +28,7 @@ private TypeIdentifierData ComputeTypeIdentifierFromGuids() if (attributeHandle.IsNil) return null; - guidAttribute = this.MetadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(this.EcmaModule)); + guidAttribute = this.MetadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(this.Module)); } if (!guidAttribute.HasValue) diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs index 87a39108774b30..b43cf4e85f872d 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs @@ -109,15 +109,7 @@ public override Instantiation Instantiation } } - public override ModuleDesc Module - { - get - { - return _module; - } - } - - public EcmaModule EcmaModule + public override EcmaModule Module { get { @@ -160,17 +152,7 @@ private MetadataType InitializeBaseType() return type; } - public override DefType BaseType - { - get - { - if (_baseType == this) - return InitializeBaseType(); - return _baseType; - } - } - - public override MetadataType MetadataBaseType + public override MetadataType BaseType { get { @@ -306,7 +288,7 @@ public override unsafe ReadOnlySpan Namespace } } - public override IEnumerable GetMethods() + public override IEnumerable GetMethods() { foreach (var handle in _typeDefinition.GetMethods()) { @@ -314,7 +296,7 @@ public override IEnumerable GetMethods() } } - public override IEnumerable GetVirtualMethods() + public override IEnumerable GetVirtualMethods() { MetadataReader reader = _module.MetadataReader; foreach (var handle in _typeDefinition.GetMethods()) @@ -325,7 +307,18 @@ public override IEnumerable GetVirtualMethods() } } - public override MethodDesc GetMethod(ReadOnlySpan name, MethodSignature signature, Instantiation substitution) + /// + /// Gets a named method on the type. This method only looks at methods defined + /// in type's metadata. The parameter can be null. + /// If signature is not specified and there are multiple matches, the first one + /// is returned. Returns null if method not found. + /// + public new EcmaMethod GetMethod(ReadOnlySpan name, MethodSignature signature) + { + return GetMethod(name, signature, default(Instantiation)); + } + + public override EcmaMethod GetMethod(ReadOnlySpan name, MethodSignature signature, Instantiation substitution) { var metadataReader = this.MetadataReader; @@ -342,7 +335,7 @@ public override MethodDesc GetMethod(ReadOnlySpan name, MethodSignature si return null; } - public override MethodDesc GetMethodWithEquivalentSignature(ReadOnlySpan name, MethodSignature signature, Instantiation substitution) + public override EcmaMethod GetMethodWithEquivalentSignature(ReadOnlySpan name, MethodSignature signature, Instantiation substitution) { var metadataReader = this.MetadataReader; @@ -359,7 +352,7 @@ public override MethodDesc GetMethodWithEquivalentSignature(ReadOnlySpan n return null; } - public override MethodDesc GetStaticConstructor() + public override EcmaMethod GetStaticConstructor() { var metadataReader = this.MetadataReader; var stringComparer = metadataReader.StringComparer; @@ -378,7 +371,7 @@ public override MethodDesc GetStaticConstructor() return null; } - public override MethodDesc GetDefaultConstructor() + public override EcmaMethod GetDefaultConstructor() { if (IsAbstract) return null; @@ -441,7 +434,7 @@ public override MethodDesc GetFinalizer() return null; } - public override IEnumerable GetFields() + public override IEnumerable GetFields() { foreach (var handle in _typeDefinition.GetFields()) { @@ -468,7 +461,7 @@ public override TypeDesc UnderlyingType } } - public override FieldDesc GetField(ReadOnlySpan name) + public override EcmaField GetField(ReadOnlySpan name) { var metadataReader = this.MetadataReader; @@ -484,7 +477,7 @@ public override FieldDesc GetField(ReadOnlySpan name) return null; } - public override IEnumerable GetNestedTypes() + public override IEnumerable GetNestedTypes() { foreach (var handle in _typeDefinition.GetNestedTypes()) { @@ -492,7 +485,7 @@ public override IEnumerable GetNestedTypes() } } - public override MetadataType GetNestedType(string name) + public override EcmaType GetNestedType(string name) { var metadataReader = this.MetadataReader; var stringComparer = metadataReader.StringComparer; @@ -513,7 +506,7 @@ public override MetadataType GetNestedType(string name) } if (nameMatched) - return (EcmaType)_module.GetObject(handle); + return _module.GetType(handle); } return null; @@ -527,7 +520,7 @@ public TypeAttributes Attributes } } - public override DefType ContainingType + public override EcmaType ContainingType { get { @@ -535,7 +528,7 @@ public override DefType ContainingType return null; var handle = _typeDefinition.GetDeclaringType(); - return (DefType)_module.GetType(handle); + return _module.GetType(handle); } } diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EffectiveVisibility.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EffectiveVisibility.cs index 88f708d5d971f6..1f20f220d2f2df 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EffectiveVisibility.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EffectiveVisibility.cs @@ -119,7 +119,7 @@ public static EffectiveVisibility GetEffectiveVisibility(this EcmaMethod method) { EffectiveVisibility visibility = method.Attributes.ToEffectiveVisibility(); - for (EcmaType type = (EcmaType)method.OwningType; type is not null; type = (EcmaType)type.ContainingType) + for (EcmaType type = method.OwningType; type is not null; type = type.ContainingType) { visibility = visibility.ConstrainToVisibility(type.Attributes.ToEffectiveVisibility()); } @@ -129,8 +129,8 @@ public static EffectiveVisibility GetEffectiveVisibility(this EcmaMethod method) public static EffectiveVisibility GetEffectiveVisibility(this EcmaType type) { EffectiveVisibility visibility = type.Attributes.ToEffectiveVisibility(); - type = (EcmaType)type.ContainingType; - for (; type is not null; type = (EcmaType)type.ContainingType) + type = type.ContainingType; + for (; type is not null; type = type.ContainingType) { visibility = visibility.ConstrainToVisibility(type.Attributes.ToEffectiveVisibility()); } @@ -159,7 +159,7 @@ public static EffectiveVisibility GetEffectiveVisibility(this EcmaField field) // Treat all non-Ecma fields as always having public visibility EffectiveVisibility visibility = field.Attributes.ToEffectiveVisibility(); - for (EcmaType type = (EcmaType)field.OwningType; type is not null; type = (EcmaType)type.ContainingType) + for (EcmaType type = field.OwningType; type is not null; type = type.ContainingType) { visibility = visibility.ConstrainToVisibility(type.Attributes.ToEffectiveVisibility()); } diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/MetadataExtensions.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/MetadataExtensions.cs index 1a0dc816c7b34b..1db988cd2aaa66 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/MetadataExtensions.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/MetadataExtensions.cs @@ -23,7 +23,7 @@ public static class MetadataExtensions if (attributeHandle.IsNil) return null; - return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(This.EcmaModule)); + return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(This.Module)); } public static IEnumerable> GetDecodedCustomAttributes(this EcmaType This, @@ -35,7 +35,7 @@ public static IEnumerable> GetDecodedCustomAttrib { if (IsEqualCustomAttributeName(attributeHandle, metadataReader, attributeNamespace, attributeName)) { - yield return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(This.EcmaModule)); + yield return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(This.Module)); } } } diff --git a/src/coreclr/tools/Common/TypeSystem/IL/EcmaMethodIL.cs b/src/coreclr/tools/Common/TypeSystem/IL/EcmaMethodIL.cs index a521ba23b8f24b..3d8a22c0adccb3 100644 --- a/src/coreclr/tools/Common/TypeSystem/IL/EcmaMethodIL.cs +++ b/src/coreclr/tools/Common/TypeSystem/IL/EcmaMethodIL.cs @@ -45,7 +45,7 @@ public EcmaModule Module } } - public override MethodDesc OwningMethod + public override EcmaMethod OwningMethod { get { diff --git a/src/coreclr/tools/Common/TypeSystem/IL/Stubs/PInvokeLazyFixupField.cs b/src/coreclr/tools/Common/TypeSystem/IL/Stubs/PInvokeLazyFixupField.cs index eeb74f74215823..6208541499e917 100644 --- a/src/coreclr/tools/Common/TypeSystem/IL/Stubs/PInvokeLazyFixupField.cs +++ b/src/coreclr/tools/Common/TypeSystem/IL/Stubs/PInvokeLazyFixupField.cs @@ -15,11 +15,11 @@ namespace Internal.IL.Stubs /// public sealed partial class PInvokeLazyFixupField : FieldDesc { - private readonly DefType _owningType; + private readonly MetadataType _owningType; private readonly MethodDesc _targetMethod; private readonly MethodSignature _nativeSignature; - public PInvokeLazyFixupField(DefType owningType, MethodDesc targetMethod, MethodSignature nativeSignature) + public PInvokeLazyFixupField(MetadataType owningType, MethodDesc targetMethod, MethodSignature nativeSignature) { Debug.Assert(targetMethod.IsPInvoke); _owningType = owningType; @@ -111,7 +111,7 @@ public override bool IsThreadStatic } } - public override DefType OwningType + public override MetadataType OwningType { get { diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs index 8fd0f847466e8b..ad106f7e9a18da 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs @@ -115,15 +115,7 @@ public override bool IsBeforeFieldInit } } - public override DefType BaseType - { - get - { - return (DefType)Context.GetWellKnownType(WellKnownType.ValueType); - } - } - - public override MetadataType MetadataBaseType + public override MetadataType BaseType { get { @@ -147,7 +139,7 @@ public override bool IsAbstract } } - public override DefType ContainingType + public override MetadataType ContainingType { get { @@ -488,7 +480,7 @@ public override bool IsThreadStatic } } - public override DefType OwningType + public override MetadataType OwningType { get { diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs index 930783b00e9e67..c3d005ee8e3c04 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs @@ -101,15 +101,7 @@ public override bool IsBeforeFieldInit } } - public override DefType BaseType - { - get - { - return (DefType)Context.GetWellKnownType(WellKnownType.ValueType); - } - } - - public override MetadataType MetadataBaseType + public override MetadataType BaseType { get { @@ -133,7 +125,7 @@ public override bool IsAbstract } } - public override DefType ContainingType + public override MetadataType ContainingType { get { @@ -389,7 +381,7 @@ public override bool IsThreadStatic } } - public override DefType OwningType + public override MetadataType OwningType { get { diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs index 19ad0c826176ef..bfd93af41f2a13 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs @@ -106,15 +106,7 @@ public override bool IsBeforeFieldInit } } - public override MetadataType MetadataBaseType - { - get - { - return InteropTypes.GetNativeFunctionPointerWrapper(Context); - } - } - - public override DefType BaseType + public override MetadataType BaseType { get { @@ -138,7 +130,7 @@ public override bool IsAbstract } } - public override DefType ContainingType + public override MetadataType ContainingType { get { diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/InteropStateManager.cs b/src/coreclr/tools/Common/TypeSystem/Interop/InteropStateManager.cs index a7fe823d3df95d..8c58088dab731c 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/InteropStateManager.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/InteropStateManager.cs @@ -481,9 +481,9 @@ protected override PInvokeLazyFixupField CreateValueFromKey(PInvokeLazyFixupFiel return new PInvokeLazyFixupField(_owningType, key.Method, key.NativeSignature); } - private readonly DefType _owningType; + private readonly MetadataType _owningType; - public PInvokeLazyFixupFieldHashtable(DefType owningType) + public PInvokeLazyFixupFieldHashtable(MetadataType owningType) { _owningType = owningType; } diff --git a/src/coreclr/tools/Common/TypeSystem/MetadataEmitter/TypeSystemMetadataEmitter.cs b/src/coreclr/tools/Common/TypeSystem/MetadataEmitter/TypeSystemMetadataEmitter.cs index 23ad91a45d9d0a..d7a87a69fbf2e0 100644 --- a/src/coreclr/tools/Common/TypeSystem/MetadataEmitter/TypeSystemMetadataEmitter.cs +++ b/src/coreclr/tools/Common/TypeSystem/MetadataEmitter/TypeSystemMetadataEmitter.cs @@ -225,7 +225,7 @@ public EntityHandle GetTypeRef(TypeDesc type) else { // nested type - resolutionScope = GetTypeRef((MetadataType)metadataType.ContainingType); + resolutionScope = GetTypeRef(metadataType.ContainingType); } typeHandle = _metadataBuilder.AddTypeReference(resolutionScope, typeNamespace, typeName); @@ -336,7 +336,7 @@ public EntityHandle GetFieldRef(FieldDesc field) EntityHandle fieldHandle; - EntityHandle typeHandle = GetTypeRef((MetadataType)field.OwningType); + EntityHandle typeHandle = GetTypeRef(field.OwningType); StringHandle fieldName = _metadataBuilder.GetOrAddString(field.GetName()); var sigBlob = GetFieldSignatureBlobHandle(field.GetTypicalFieldDefinition()); diff --git a/src/coreclr/tools/Common/TypeSystem/RuntimeDetermined/FieldDesc.RuntimeDetermined.cs b/src/coreclr/tools/Common/TypeSystem/RuntimeDetermined/FieldDesc.RuntimeDetermined.cs index f1bf0d968189ed..50dd8fc83f674b 100644 --- a/src/coreclr/tools/Common/TypeSystem/RuntimeDetermined/FieldDesc.RuntimeDetermined.cs +++ b/src/coreclr/tools/Common/TypeSystem/RuntimeDetermined/FieldDesc.RuntimeDetermined.cs @@ -7,7 +7,7 @@ public partial class FieldDesc { public FieldDesc GetNonRuntimeDeterminedFieldFromRuntimeDeterminedFieldViaSubstitution(Instantiation typeInstantiation, Instantiation methodInstantiation) { - DefType owningType = OwningType; + MetadataType owningType = OwningType; TypeDesc owningTypeInstantiated = owningType.GetNonRuntimeDeterminedTypeFromRuntimeDeterminedSubtypeViaSubstitution(typeInstantiation, methodInstantiation); if (owningTypeInstantiated != owningType) { diff --git a/src/coreclr/tools/ILVerification/TypeVerifier.cs b/src/coreclr/tools/ILVerification/TypeVerifier.cs index 94672533bdd21f..4caec0c170c7eb 100644 --- a/src/coreclr/tools/ILVerification/TypeVerifier.cs +++ b/src/coreclr/tools/ILVerification/TypeVerifier.cs @@ -45,7 +45,7 @@ public void Verify() public void VerifyInterfaces() { TypeDefinition typeDefinition = _module.MetadataReader.GetTypeDefinition(_typeDefinitionHandle); - EcmaType type = (EcmaType)_module.GetType(_typeDefinitionHandle); + EcmaType type = _module.GetType(_typeDefinitionHandle); if (type.IsInterface) { @@ -59,7 +59,7 @@ public void VerifyInterfaces() return; } - // Look for duplicates and prepare distinct list of implemented interfaces to avoid + // Look for duplicates and prepare distinct list of implemented interfaces to avoid // subsequent error duplication List implementedInterfaces = new List(); foreach (InterfaceImplementationHandle interfaceHandle in interfaceHandles) diff --git a/src/coreclr/tools/ILVerification/Verifier.cs b/src/coreclr/tools/ILVerification/Verifier.cs index 5283521515ad1f..aeff2972c0f27b 100644 --- a/src/coreclr/tools/ILVerification/Verifier.cs +++ b/src/coreclr/tools/ILVerification/Verifier.cs @@ -158,7 +158,7 @@ private IEnumerable VerifyMethods(EcmaModule module, IEnumer { foreach (var methodHandle in methodHandles) { - var method = (EcmaMethod)module.GetMethod(methodHandle); + var method = module.GetMethod(methodHandle); var methodIL = EcmaMethodIL.Create(method); if (methodIL != null) diff --git a/src/coreclr/tools/ILVerify/Program.cs b/src/coreclr/tools/ILVerify/Program.cs index 3d5cab0ab42b01..a0fdd9b8e3733a 100644 --- a/src/coreclr/tools/ILVerify/Program.cs +++ b/src/coreclr/tools/ILVerify/Program.cs @@ -156,7 +156,7 @@ private void PrintVerifyMethodsResult(VerificationResult result, EcmaModule modu Write(fullClassName); Write("::"); - var method = (EcmaMethod)module.GetMethod(result.Method); + var method = module.GetMethod(result.Method); PrintMethod(method); Write("]"); diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs index 71dd95ec089a30..447d98dd46ee82 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs @@ -267,11 +267,10 @@ private sealed partial class BoxedValueType : MetadataType, INonEmittableType public override bool IsExtendedLayout => true; public override bool IsAutoLayout => false; public override bool IsBeforeFieldInit => false; - public override MetadataType MetadataBaseType => (MetadataType)Context.GetWellKnownType(WellKnownType.Object); - public override DefType BaseType => MetadataBaseType; + public override MetadataType BaseType => (MetadataType)Context.GetWellKnownType(WellKnownType.Object); public override bool IsSealed => true; public override bool IsAbstract => false; - public override DefType ContainingType => null; + public override MetadataType ContainingType => null; public override DefType[] ExplicitlyImplementedInterfaces => Array.Empty(); public override TypeSystemContext Context => ValueTypeRepresented.Context; diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs index eec84d7b9924d4..96296f4a762762 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs @@ -230,16 +230,7 @@ public override bool IsBeforeFieldInit } } - public override DefType BaseType - { - get - { - // See below - return null; - } - } - - public override MetadataType MetadataBaseType + public override MetadataType BaseType { get { @@ -265,7 +256,7 @@ public override bool IsAbstract } } - public override DefType ContainingType + public override MetadataType ContainingType { get { diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CustomAttributeExtensions.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CustomAttributeExtensions.cs index 73c83403d0a025..c7731a039d30ad 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CustomAttributeExtensions.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CustomAttributeExtensions.cs @@ -12,7 +12,7 @@ public static class CustomAttributeExtensions { public static CustomAttributeValue? GetDecodedCustomAttribute(this PropertyPseudoDesc prop, string attributeNamespace, string attributeName) { - var ecmaType = prop.OwningType as EcmaType; + var ecmaType = prop.OwningType; var metadataReader = ecmaType.MetadataReader; var attributeHandle = metadataReader.GetCustomAttributeHandle(prop.GetCustomAttributes, @@ -21,12 +21,12 @@ public static class CustomAttributeExtensions if (attributeHandle.IsNil) return null; - return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(ecmaType.EcmaModule)); + return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(ecmaType.Module)); } public static IEnumerable> GetDecodedCustomAttributes(this PropertyPseudoDesc prop, string attributeNamespace, string attributeName) { - var ecmaType = prop.OwningType as EcmaType; + var ecmaType = prop.OwningType; var metadataReader = ecmaType.MetadataReader; var attributeHandles = prop.GetCustomAttributes; @@ -34,14 +34,14 @@ public static IEnumerable> GetDecodedCustomAttrib { if (MetadataExtensions.IsEqualCustomAttributeName(attributeHandle, metadataReader, attributeNamespace, attributeName)) { - yield return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(ecmaType.EcmaModule)); + yield return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(ecmaType.Module)); } } } public static CustomAttributeValue? GetDecodedCustomAttribute(this EventPseudoDesc @event, string attributeNamespace, string attributeName) { - var ecmaType = @event.OwningType as EcmaType; + var ecmaType = @event.OwningType; var metadataReader = ecmaType.MetadataReader; var attributeHandle = metadataReader.GetCustomAttributeHandle(@event.GetCustomAttributes, @@ -50,12 +50,12 @@ public static IEnumerable> GetDecodedCustomAttrib if (attributeHandle.IsNil) return null; - return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(ecmaType.EcmaModule)); + return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(ecmaType.Module)); } public static IEnumerable> GetDecodedCustomAttributes(this EventPseudoDesc @event, string attributeNamespace, string attributeName) { - var ecmaType = @event.OwningType as EcmaType; + var ecmaType = @event.OwningType; var metadataReader = ecmaType.MetadataReader; var attributeHandles = @event.GetCustomAttributes; @@ -63,7 +63,7 @@ public static IEnumerable> GetDecodedCustomAttrib { if (MetadataExtensions.IsEqualCustomAttributeName(attributeHandle, metadataReader, attributeNamespace, attributeName)) { - yield return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(ecmaType.EcmaModule)); + yield return metadataReader.GetCustomAttribute(attributeHandle).DecodeValue(new CustomAttributeTypeProvider(ecmaType.Module)); } } } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/Dataflow/FlowAnnotations.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/Dataflow/FlowAnnotations.cs index 7e756a951d4c21..f5691b49f5ca83 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/Dataflow/FlowAnnotations.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/Dataflow/FlowAnnotations.cs @@ -282,7 +282,7 @@ public static bool IsTypeInterestingForDataflow(TypeDesc type) { if (metadataType.Name.SequenceEqual("Type"u8) && metadataType.Namespace.SequenceEqual("System"u8)) return true; - } while ((metadataType = metadataType.MetadataBaseType) != null); + } while ((metadataType = metadataType.BaseType) != null); return false; } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/CustomAttributeBasedDependencyAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/CustomAttributeBasedDependencyAlgorithm.cs index 90f5791a82ef48..1b0b36055287f9 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/CustomAttributeBasedDependencyAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/CustomAttributeBasedDependencyAlgorithm.cs @@ -72,7 +72,7 @@ public static void AddDependenciesDueToCustomAttributes(ref CombinedDependencyLi PropertyAccessors accessors = property.GetAccessors(); if (accessors.Getter == methodHandle || accessors.Setter == methodHandle) - AddDependenciesDueToCustomAttributes(ref dependencies, propertyCondition, factory, method.Module, property.GetCustomAttributes(), new PropertyPseudoDesc((EcmaType)method.OwningType, propertyHandle)); + AddDependenciesDueToCustomAttributes(ref dependencies, propertyCondition, factory, method.Module, property.GetCustomAttributes(), new PropertyPseudoDesc(method.OwningType, propertyHandle)); } object eventCondition = GetMetadataApiDependency(factory, "Event"u8); @@ -82,7 +82,7 @@ public static void AddDependenciesDueToCustomAttributes(ref CombinedDependencyLi EventAccessors accessors = @event.GetAccessors(); if (accessors.Adder == methodHandle || accessors.Remover == methodHandle || accessors.Raiser == methodHandle) - AddDependenciesDueToCustomAttributes(ref dependencies, eventCondition, factory, method.Module, @event.GetCustomAttributes(), new EventPseudoDesc((EcmaType)method.OwningType, eventHandle)); + AddDependenciesDueToCustomAttributes(ref dependencies, eventCondition, factory, method.Module, @event.GetCustomAttributes(), new EventPseudoDesc(method.OwningType, eventHandle)); } } } @@ -91,14 +91,14 @@ public static void AddDependenciesDueToCustomAttributes(ref CombinedDependencyLi { MetadataReader reader = type.MetadataReader; TypeDefinition typeDef = reader.GetTypeDefinition(type.Handle); - AddDependenciesDueToCustomAttributes(ref dependencies, GetMetadataApiDependency(factory, "TypeDefinition"u8), factory, type.EcmaModule, typeDef.GetCustomAttributes(), type); + AddDependenciesDueToCustomAttributes(ref dependencies, GetMetadataApiDependency(factory, "TypeDefinition"u8), factory, type.Module, typeDef.GetCustomAttributes(), type); // Handle custom attributes on generic type parameters object genericParameterCondition = GetMetadataApiDependency(factory, "GenericParameter"u8); foreach (GenericParameterHandle genericParameterHandle in typeDef.GetGenericParameters()) { GenericParameter parameter = reader.GetGenericParameter(genericParameterHandle); - AddDependenciesDueToCustomAttributes(ref dependencies, genericParameterCondition, factory, type.EcmaModule, parameter.GetCustomAttributes(), type); + AddDependenciesDueToCustomAttributes(ref dependencies, genericParameterCondition, factory, type.Module, parameter.GetCustomAttributes(), type); } } @@ -250,7 +250,7 @@ private static bool AddDependenciesFromPropertySetter(DependencyList dependencie if (!accessors.Setter.IsNil) { - MethodDesc setterMethod = (MethodDesc)attributeTypeDefinition.EcmaModule.GetObject(accessors.Setter); + MethodDesc setterMethod = (MethodDesc)attributeTypeDefinition.Module.GetObject(accessors.Setter); if (factory.MetadataManager.IsReflectionBlocked(setterMethod)) return false; diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/FieldMetadataNode.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/FieldMetadataNode.cs index 68837a34384644..7c9aa3f5b278d5 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/FieldMetadataNode.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/FieldMetadataNode.cs @@ -38,7 +38,7 @@ public FieldMetadataNode(FieldDesc field) public override IEnumerable GetStaticDependencies(NodeFactory factory) { DependencyList dependencies = new DependencyList(); - dependencies.Add(factory.TypeMetadata((MetadataType)_field.OwningType), "Owning type metadata"); + dependencies.Add(factory.TypeMetadata(_field.OwningType), "Owning type metadata"); if (_field is EcmaField ecmaField) { diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectGetTypeFlowDependenciesNode.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectGetTypeFlowDependenciesNode.cs index 49fa353f50e55c..fdfe54c8fb6219 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectGetTypeFlowDependenciesNode.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectGetTypeFlowDependenciesNode.cs @@ -37,7 +37,7 @@ public override IEnumerable GetStaticDependencies(NodeFacto DependencyList result = Dataflow.ReflectionMethodBodyScanner.ProcessTypeGetTypeDataflow(factory, mdManager.FlowAnnotations, mdManager.Logger, _type); - MetadataType baseType = _type.MetadataBaseType; + MetadataType baseType = _type.BaseType; if (baseType != null && flowAnnotations.GetTypeAnnotation(baseType) != default) { result.Add(factory.ObjectGetTypeFlowDependencies(baseType), "Apply annotations to bases"); diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ReflectedFieldNode.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ReflectedFieldNode.cs index f5359a5f6e57b5..60213cdfb8c634 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ReflectedFieldNode.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ReflectedFieldNode.cs @@ -71,28 +71,28 @@ public override IEnumerable GetStaticDependencies(NodeFacto } else if (_field.IsThreadStatic) { - dependencies.Add(factory.TypeThreadStaticIndex((MetadataType)_field.OwningType), "Threadstatic base of a reflectable field"); + dependencies.Add(factory.TypeThreadStaticIndex(_field.OwningType), "Threadstatic base of a reflectable field"); } else if (_field.HasGCStaticBase) { - dependencies.Add(factory.TypeGCStaticsSymbol((MetadataType)_field.OwningType), "GC static base of a reflectable field"); + dependencies.Add(factory.TypeGCStaticsSymbol(_field.OwningType), "GC static base of a reflectable field"); } else { - dependencies.Add(factory.TypeNonGCStaticsSymbol((MetadataType)_field.OwningType), "NonGC static base of a reflectable field"); + dependencies.Add(factory.TypeNonGCStaticsSymbol(_field.OwningType), "NonGC static base of a reflectable field"); needsNonGcStaticBase = false; } if (needsNonGcStaticBase) { - dependencies.Add(factory.TypeNonGCStaticsSymbol((MetadataType)_field.OwningType), "CCtor context"); + dependencies.Add(factory.TypeNonGCStaticsSymbol(_field.OwningType), "CCtor context"); } // For generic types, the reflection mapping table only keeps track of information about offsets // from the static bases. To locate the static base, we need the GenericStaticBaseInfo hashtable. if (_field.OwningType.HasInstantiation) { - dependencies.Add(factory.GenericStaticBaseInfo((MetadataType)_field.OwningType), "Field on a generic type"); + dependencies.Add(factory.GenericStaticBaseInfo(_field.OwningType), "Field on a generic type"); } } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/TypeMetadataNode.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/TypeMetadataNode.cs index 0d26a15756011c..deb15303ee8030 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/TypeMetadataNode.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/TypeMetadataNode.cs @@ -37,13 +37,13 @@ public override IEnumerable GetStaticDependencies(NodeFacto { DependencyList dependencies = new DependencyList(); - DefType containingType = _type.ContainingType; + MetadataType containingType = _type.ContainingType; if (containingType != null) - dependencies.Add(factory.TypeMetadata((MetadataType)containingType), "Containing type of a reflectable type"); + dependencies.Add(factory.TypeMetadata(containingType), "Containing type of a reflectable type"); else dependencies.Add(factory.ModuleMetadata(_type.Module), "Containing module of a reflectable type"); - MetadataType baseType = _type.MetadataBaseType; + MetadataType baseType = _type.BaseType; if (baseType != null) GetMetadataDependencies(ref dependencies, factory, baseType, "Base type of a reflectable type"); diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ExternSymbolMappedField.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ExternSymbolMappedField.cs index 4c83d4854232bd..7e560963522de2 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ExternSymbolMappedField.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ExternSymbolMappedField.cs @@ -24,7 +24,7 @@ public ExternSymbolMappedField(TypeDesc fieldType, string symbolName) public string SymbolName => _symbolName; - public override DefType OwningType => _fieldType.Context.SystemModule.GetGlobalModuleType(); + public override MetadataType OwningType => _fieldType.Context.SystemModule.GetGlobalModuleType(); public override TypeDesc FieldType => _fieldType; public override EmbeddedSignatureData[] GetEmbeddedSignatureData() => null; diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/MultiFileCompilationModuleGroup.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/MultiFileCompilationModuleGroup.cs index 031508b7cc5f26..ba5a78c740af37 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/MultiFileCompilationModuleGroup.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/MultiFileCompilationModuleGroup.cs @@ -29,7 +29,7 @@ public sealed override bool ContainsType(TypeDesc type) if (ecmaType == null) return true; - if (!IsModuleInCompilationGroup(ecmaType.EcmaModule)) + if (!IsModuleInCompilationGroup(ecmaType.Module)) { return false; } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/TypePreinit.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/TypePreinit.cs index 1bb6cbd2555680..5193add152802e 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/TypePreinit.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/TypePreinit.cs @@ -427,7 +427,7 @@ private Status TryScanMethod(MethodIL methodIL, Value[] parameters, Stack ExportedMethods if (ca.Parent.Kind != HandleKind.MethodDefinition) continue; + var parent = (MethodDefinitionHandle)ca.Parent; + if (!reader.GetAttributeNamespaceAndName(caHandle, out StringHandle nsHandle, out StringHandle nameHandle)) continue; if (comparer.Equals(nameHandle, "RuntimeExportAttribute") && comparer.Equals(nsHandle, "System.Runtime")) { - var method = (EcmaMethod)_module.GetMethod(ca.Parent); + EcmaMethod method = _module.GetMethod(parent); if (method.GetRuntimeExportName() != null) yield return method; } @@ -50,7 +52,7 @@ public IEnumerable ExportedMethods if (comparer.Equals(nameHandle, "UnmanagedCallersOnlyAttribute") && comparer.Equals(nsHandle, "System.Runtime.InteropServices")) { - var method = (EcmaMethod)_module.GetMethod(ca.Parent); + EcmaMethod method = _module.GetMethod(parent); if (method.GetUnmanagedCallersOnlyExportName() != null) yield return method; } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/UsageBasedMetadataManager.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/UsageBasedMetadataManager.cs index f6e3d982ba936d..9979a0deb8cc43 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/UsageBasedMetadataManager.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/UsageBasedMetadataManager.cs @@ -788,7 +788,7 @@ public bool GeneratesAttributeMetadata(TypeDesc attributeType) var ecmaType = attributeType.GetTypeDefinition() as EcmaType; if (ecmaType != null) { - var moduleInfo = _linkAttributesHashTable.GetOrCreateValue(ecmaType.EcmaModule); + var moduleInfo = _linkAttributesHashTable.GetOrCreateValue(ecmaType.Module); return !moduleInfo.RemovedAttributes.Contains(ecmaType); } diff --git a/src/coreclr/tools/aot/ILCompiler.MetadataTransform/ILCompiler/Metadata/Transform.Type.cs b/src/coreclr/tools/aot/ILCompiler.MetadataTransform/ILCompiler/Metadata/Transform.Type.cs index 40cba0c5914a63..b5c9a31fd3321a 100644 --- a/src/coreclr/tools/aot/ILCompiler.MetadataTransform/ILCompiler/Metadata/Transform.Type.cs +++ b/src/coreclr/tools/aot/ILCompiler.MetadataTransform/ILCompiler/Metadata/Transform.Type.cs @@ -336,14 +336,14 @@ private void InitializeTypeDef(Cts.MetadataType entity, TypeDefinition record) foreach (var e in ecmaRecord.GetEvents()) { - Event evt = HandleEvent(ecmaEntity.EcmaModule, e); + Event evt = HandleEvent(ecmaEntity.Module, e); if (evt != null) record.Events.Add(evt); } foreach (var property in ecmaRecord.GetProperties()) { - Property prop = HandleProperty(ecmaEntity.EcmaModule, property); + Property prop = HandleProperty(ecmaEntity.Module, property); if (prop != null) record.Properties.Add(prop); } @@ -351,21 +351,21 @@ private void InitializeTypeDef(Cts.MetadataType entity, TypeDefinition record) Ecma.CustomAttributeHandleCollection customAttributes = ecmaRecord.GetCustomAttributes(); if (customAttributes.Count > 0) { - record.CustomAttributes = HandleCustomAttributes(ecmaEntity.EcmaModule, customAttributes); + record.CustomAttributes = HandleCustomAttributes(ecmaEntity.Module, customAttributes); } /* COMPLETENESS foreach (var miHandle in ecmaRecord.GetMethodImplementations()) { - Ecma.MetadataReader reader = ecmaEntity.EcmaModule.MetadataReader; + Ecma.MetadataReader reader = ecmaEntity.Module.MetadataReader; Ecma.MethodImplementation miDef = reader.GetMethodImplementation(miHandle); - Cts.MethodDesc methodBody = (Cts.MethodDesc)ecmaEntity.EcmaModule.GetObject(miDef.MethodBody); + Cts.MethodDesc methodBody = (Cts.MethodDesc)ecmaEntity.Module.GetObject(miDef.MethodBody); if (_policy.IsBlocked(methodBody)) continue; - Cts.MethodDesc methodDecl = (Cts.MethodDesc)ecmaEntity.EcmaModule.GetObject(miDef.MethodDeclaration); + Cts.MethodDesc methodDecl = (Cts.MethodDesc)ecmaEntity.Module.GetObject(miDef.MethodDeclaration); if (_policy.IsBlocked(methodDecl.GetTypicalMethodDefinition())) continue; diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedFieldRvaNode.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedFieldRvaNode.cs index e73c321649509f..ec7a46b51a5856 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedFieldRvaNode.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedFieldRvaNode.cs @@ -62,7 +62,7 @@ private unsafe byte[] GetRvaData(int targetPointerSize, out int requiredAlignmen BlobReader metadataBlob = new BlobReader(_module.PEReader.GetMetadata().Pointer, _module.PEReader.GetMetadata().Length); metadataBlob.Offset = metadataReader.GetTableMetadataOffset(TableIndex.FieldRva); bool compressedFieldRef = 6 == metadataReader.GetTableRowSize(TableIndex.FieldRva); - + for (int i = 1; i <= metadataReader.GetTableRowCount(TableIndex.FieldRva); i++) { int currentFieldRva = metadataBlob.ReadInt32(); @@ -78,7 +78,7 @@ private unsafe byte[] GetRvaData(int targetPointerSize, out int requiredAlignmen if (currentFieldRva != _rva) continue; - EcmaField field = (EcmaField)_module.GetField(MetadataTokens.FieldDefinitionHandle(currentFieldRid)); + EcmaField field = _module.GetField(MetadataTokens.FieldDefinitionHandle(currentFieldRid)); Debug.Assert(field.HasRva); int currentSize = field.FieldType.GetElementSize().AsInt; diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedMetadataBlobNode.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedMetadataBlobNode.cs index 913ed4ab9e3408..1574f2bee2de1b 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedMetadataBlobNode.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedMetadataBlobNode.cs @@ -13,13 +13,13 @@ namespace ILCompiler.DependencyAnalysis.ReadyToRun { /// - /// Copies the metadata blob from input MSIL assembly to output ready-to-run image, fixing up Rvas to + /// Copies the metadata blob from input MSIL assembly to output ready-to-run image, fixing up Rvas to /// method IL bodies and FieldRvas. /// public class CopiedMetadataBlobNode : ObjectNode, ISymbolDefinitionNode { EcmaModule _sourceModule; - + public CopiedMetadataBlobNode(EcmaModule sourceModule) { _sourceModule = sourceModule; @@ -73,7 +73,7 @@ private void WriteFieldRvas(NodeFactory factory, ref ObjectDataBuilder builder, var tableIndex = TableIndex.FieldRva; int rowCount = metadataReader.GetTableRowCount(tableIndex); bool compressedFieldRef = 6 == metadataReader.GetTableRowSize(TableIndex.FieldRva); - + for (int i = 1; i <= rowCount; i++) { Debug.Assert(builder.CountBytes == reader.Offset); @@ -91,7 +91,7 @@ private void WriteFieldRvas(NodeFactory factory, ref ObjectDataBuilder builder, fieldToken = reader.ReadInt32(); } EntityHandle fieldHandle = MetadataTokens.EntityHandle(TableIndex.Field, fieldToken); - EcmaField fieldDesc = (EcmaField)_sourceModule.GetField(fieldHandle); + EcmaField fieldDesc = _sourceModule.GetField((FieldDefinitionHandle)fieldHandle); Debug.Assert(fieldDesc.HasRva); builder.EmitReloc(factory.CopiedFieldRva(fieldDesc), RelocType.IMAGE_REL_BASED_ADDR32NB); @@ -121,7 +121,7 @@ public unsafe override ObjectData GetData(NodeFactory factory, bool relocsOnly = int methodDefTableOffset = metadataReader.GetTableMetadataOffset(TableIndex.MethodDef); builder.EmitBytes(metadataBlob.ReadBytes(methodDefTableOffset)); - + WriteMethodTableRvas(factory, ref builder, ref metadataBlob); // diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedMethodILNode.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedMethodILNode.cs index 2b1ad266ae8762..c2683465fa1e07 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedMethodILNode.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/CopiedMethodILNode.cs @@ -19,7 +19,7 @@ public CopiedMethodILNode(EcmaMethod method) { Debug.Assert(!method.IsAbstract); - _method = (EcmaMethod)method.GetTypicalMethodDefinition(); + _method = method.GetTypicalMethodDefinition(); } public override ObjectNodeSection GetSection(NodeFactory factory) => ObjectNodeSection.TextSection; diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/ModuleTokenResolver.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/ModuleTokenResolver.cs index 87ab4dda3ae4d3..dc122655054034 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/ModuleTokenResolver.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/ModuleTokenResolver.cs @@ -56,7 +56,7 @@ public ModuleToken GetModuleTokenForType(EcmaType type, bool allowDynamicallyCre { if (_compilationModuleGroup.VersionsWithType(type)) { - return new ModuleToken(type.EcmaModule, (mdToken)MetadataTokens.GetToken(type.Handle)); + return new ModuleToken(type.Module, (mdToken)MetadataTokens.GetToken(type.Handle)); } ModuleToken token; diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/TypeValidationChecker.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/TypeValidationChecker.cs index 0f4cfe2b0a0c97..5d21f0dcdd56c1 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/TypeValidationChecker.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/TypeValidationChecker.cs @@ -57,7 +57,7 @@ private async Task CanSkipValidationInstance(EcmaModule module) if (type is EcmaType ecmaType) _tasksThatMustFinish.Enqueue(ValidateType(this, ecmaType)); } - _tasksThatMustFinish.Enqueue(ValidateType(this, (EcmaType)module.GetGlobalModuleType())); + _tasksThatMustFinish.Enqueue(ValidateType(this, module.GetGlobalModuleType())); bool failAtEnd = false; while (_tasksThatMustFinish.TryDequeue(out var taskToComplete)) @@ -151,7 +151,7 @@ Task ValidateTypeWorkerHelper(TypeDesc typeToCheckForSkipValidation) // Per method rules foreach (var methodDesc in type.GetMethods()) { - var method = (EcmaMethod)methodDesc; + var method = methodDesc; var methodDef = method.MetadataReader.GetMethodDefinition(method.Handle); // Validate that the validateTokenSig algorithm on all methods defined on the type // The validateTokenSig algorithm simply validates the phyical structure of the signature. Getting a MethodSignature object is a more complete check @@ -253,7 +253,7 @@ Task ValidateTypeWorkerHelper(TypeDesc typeToCheckForSkipValidation) } } // validate that the global class cannot have instance methods - if (type.EcmaModule.GetGlobalModuleType() == type && !methodDef.Attributes.HasFlag(MethodAttributes.Static)) + if (type.Module.GetGlobalModuleType() == type && !methodDef.Attributes.HasFlag(MethodAttributes.Static)) { AddTypeValidationError(type, $"'{method}' is an instance method defined on the global type"); return false; @@ -310,8 +310,8 @@ Task ValidateTypeWorkerHelper(TypeDesc typeToCheckForSkipValidation) foreach (var methodImplHandle in typeDef.GetMethodImplementations()) { var methodImpl = type.MetadataReader.GetMethodImplementation(methodImplHandle); - var methodBody = type.EcmaModule.GetMethod(methodImpl.MethodBody); - var methodDecl = type.EcmaModule.GetMethod(methodImpl.MethodDeclaration); + var methodBody = type.Module.GetMethod(methodImpl.MethodBody); + var methodDecl = type.Module.GetMethod(methodImpl.MethodDeclaration); // Validate that all MethodImpls actually match signatures closely enough if (!methodBody.Signature.ApplySubstitution(type.Instantiation).EquivalentWithCovariantReturnType(methodDecl.Signature.ApplySubstitution(type.Instantiation))) diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunCompilationModuleGroupBase.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunCompilationModuleGroupBase.cs index a2ea17ccc111b8..ead9bc72fc85a1 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunCompilationModuleGroupBase.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunCompilationModuleGroupBase.cs @@ -110,7 +110,7 @@ public void AssociateTokenResolver(ModuleTokenResolver tokenResolver) public sealed override bool ContainsType(TypeDesc type) { - return type.GetTypeDefinition() is EcmaType ecmaType && IsModuleInCompilationGroup(ecmaType.EcmaModule); + return type.GetTypeDefinition() is EcmaType ecmaType && IsModuleInCompilationGroup(ecmaType.Module); } public bool IsModuleInCompilationGroup(EcmaModule module) @@ -508,7 +508,7 @@ public override bool CrossModuleInlineable(MethodDesc method) { if (!_crossModuleInlining) return false; - + return CrossModuleInlineableInternal(method); } @@ -568,7 +568,7 @@ private bool IsNonVersionableWithILTokensThatDoNotNeedTranslationUncached(EcmaMe { // Validate that there are no tokens in the IL other than tokens associated with the following - // instructions with the + // instructions with the // 1. ldfld, ldflda, and stfld to instance fields of NonVersionable structs and NonVersionable classes // 2. cpobj, initobj, ldobj, stobj, ldelem, ldelema or sizeof, to NonVersionable structures, signature variables, pointers, function pointers, byrefs, classes, or arrays // 3. stelem, to NonVersionable structures @@ -619,7 +619,7 @@ private bool IsNonVersionableWithILTokensThatDoNotNeedTranslationUncached(EcmaMe return false; if (field.IsStatic) return false; - MetadataType owningMetadataType = (MetadataType)field.OwningType; + MetadataType owningMetadataType = field.OwningType; if (!owningMetadataType.IsNonVersionable()) return false; break; @@ -689,7 +689,7 @@ private bool IsNonVersionableWithILTokensThatDoNotNeedTranslationUncached(EcmaMe return false; default: - // Unless its a opcode known to be permitted with a + // Unless its a opcode known to be permitted with a ilReader.Skip(opcode); break; } @@ -768,7 +768,7 @@ private bool ComputeTypeVersionsWithCode(TypeDesc type) { return false; } - + if (type.IsCanonicalDefinitionType(CanonicalFormKind.Any)) return true; diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs index 8b343e0b2d565e..ba52e485554348 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs @@ -56,7 +56,7 @@ public override ComputedStaticFieldLayout ComputeStaticFieldLayout(DefType defTy if (defType.GetTypeDefinition() is EcmaType ecmaType) { // ECMA types are the only ones that can have statics - ModuleFieldLayout moduleFieldLayout = _moduleFieldLayoutMap.GetOrCreateValue(ecmaType.EcmaModule); + ModuleFieldLayout moduleFieldLayout = _moduleFieldLayoutMap.GetOrCreateValue(ecmaType.Module); layout.Offsets = _moduleFieldLayoutMap.GetOrAddDynamicLayout(defType, moduleFieldLayout); } return layout; @@ -114,7 +114,7 @@ private void GetElementTypeInfoGeneric( { ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadGeneral, fieldDesc.OwningType); } - if (moduleLayout && fieldType.GetTypeDefinition() is EcmaType ecmaType && ecmaType.EcmaModule != module) + if (moduleLayout && fieldType.GetTypeDefinition() is EcmaType ecmaType && ecmaType.Module != module) { // Allocate pessimistic non-GC area for cross-module fields as that's what CoreCLR does // here @@ -215,7 +215,7 @@ private void GetElementTypeInfo( { ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadGeneral, fieldDesc.OwningType); } - if (moduleLayout && fieldDesc.FieldType.GetTypeDefinition() is EcmaType ecmaType && ecmaType.EcmaModule != module) + if (moduleLayout && fieldDesc.FieldType.GetTypeDefinition() is EcmaType ecmaType && ecmaType.Module != module) { // Allocate pessimistic non-GC area for cross-module fields as that's what CoreCLR does // here @@ -614,7 +614,7 @@ protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(Metada return ComputeCStructFieldLayout(type, numInstanceFields); case MetadataLayoutKind.Explicit: // Works around https://github.com/dotnet/runtime/issues/102868 - if (type is { IsValueType: false, MetadataBaseType.IsSequentialLayout: true }) + if (type is { IsValueType: false, BaseType.IsSequentialLayout: true }) { ThrowHelper.ThrowTypeLoadException(type); } @@ -622,7 +622,7 @@ protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(Metada return ComputeExplicitFieldLayout(type, numInstanceFields, layoutMetadata); case MetadataLayoutKind.Sequential when !type.ContainsGCPointers: // Works around https://github.com/dotnet/runtime/issues/102868 - if (type is { IsValueType: false, MetadataBaseType.IsExplicitLayout: true }) + if (type is { IsValueType: false, BaseType.IsExplicitLayout: true }) { ThrowHelper.ThrowTypeLoadException(type); } diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IBC/IBCProfileParser.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IBC/IBCProfileParser.cs index 521cb531e4ad1a..3962a9ef3f3d35 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IBC/IBCProfileParser.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IBC/IBCProfileParser.cs @@ -356,7 +356,7 @@ private uint LookupIbcTypeToken(ref EcmaModule externalModule, uint ibcToken, Di foundType = (EcmaType)m.GetType(typeNamespace, typeName, NotFoundBehavior.ReturnNull); if (foundType != null) { - externalModule = foundType.EcmaModule; + externalModule = foundType.Module; break; } } @@ -403,7 +403,7 @@ private uint LookupIbcMethodToken(MetadataType methodMetadataType, uint ibcToken var ecmaType = (EcmaType)methodMetadataType.GetTypeDefinition(); - EcmaModule ecmaModule = ecmaType.EcmaModule; + EcmaModule ecmaModule = ecmaType.Module; var lookupClassTokenTypeDef = (int)LookupIbcTypeToken(ref ecmaModule, methodEntry.ClassToken, blobs); if (lookupClassTokenTypeDef != ecmaType.MetadataReader.GetToken(ecmaType.Handle)) throw new Exception($"Ibc MethodToken {ibcToken:x} incosistent classToken '{ibcToken:x}' with specified exact type '{ecmaType}'"); @@ -475,9 +475,9 @@ private TypeDesc GetSigTypeFromIBCZapSig(IBCModule ibcModule, EcmaModule ecmaMod return context.GetWellKnownType(WellKnownType.Boolean); case CorElementType.ELEMENT_TYPE_CHAR: return context.GetWellKnownType(WellKnownType.Char); - case CorElementType.ELEMENT_TYPE_I: - return context.GetWellKnownType(WellKnownType.IntPtr); - case CorElementType.ELEMENT_TYPE_U: + case CorElementType.ELEMENT_TYPE_I: + return context.GetWellKnownType(WellKnownType.IntPtr); + case CorElementType.ELEMENT_TYPE_U: return context.GetWellKnownType(WellKnownType.UIntPtr); case CorElementType.ELEMENT_TYPE_I1: return context.GetWellKnownType(WellKnownType.SByte); @@ -737,7 +737,7 @@ private MethodDesc GetSigMethodInstantiationFromIBCMethodSpec(IBCModule ibcModul } } - EcmaModule ecmaModuleOfMethod = ((EcmaType)methodMetadataType.GetTypeDefinition()).EcmaModule; + EcmaModule ecmaModuleOfMethod = ((EcmaType)methodMetadataType.GetTypeDefinition()).Module; MethodDesc ecmaMethod = ecmaModuleOfMethod.GetMethod(MetadataTokens.EntityHandle((int)methodToken)); MethodDesc methodOnType = methodType.FindMethodOnTypeWithMatchingTypicalMethod(ecmaMethod); diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IBC/MIbcProfileParser.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IBC/MIbcProfileParser.cs index d8472631847de4..2f186d3ebaa19b 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IBC/MIbcProfileParser.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IBC/MIbcProfileParser.cs @@ -185,7 +185,7 @@ public static ProfileData ParseMIbcFile(TypeSystemContext tsc, PEReader peReader var mibcModule = EcmaModule.Create(tsc, peReader, null, null, new CustomCanonResolver(tsc)); - var assemblyDictionary = (EcmaMethod)mibcModule.GetGlobalModuleType().GetMethod("AssemblyDictionary"u8, null); + EcmaMethod assemblyDictionary = mibcModule.GetGlobalModuleType().GetMethod("AssemblyDictionary"u8, null); IEnumerable loadedMethodProfileData = Enumerable.Empty(); EcmaMethodIL ilBody = EcmaMethodIL.Create(assemblyDictionary); @@ -267,7 +267,7 @@ public static ProfileData ParseMIbcFile(TypeSystemContext tsc, PEReader peReader public static MibcConfig ParseMibcConfig(TypeSystemContext tsc, PEReader pEReader) { EcmaModule mibcModule = EcmaModule.Create(tsc, pEReader, null); - EcmaMethod mibcConfigMth = (EcmaMethod)mibcModule.GetGlobalModuleType().GetMethod("MibcConfig"u8, null); + EcmaMethod mibcConfigMth = mibcModule.GetGlobalModuleType().GetMethod("MibcConfig"u8, null); if (mibcConfigMth == null) return null; diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IL/ReadyToRunILProvider.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IL/ReadyToRunILProvider.cs index 4f1020d92b7772..6ea7cb2638fedf 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IL/ReadyToRunILProvider.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/IL/ReadyToRunILProvider.cs @@ -211,7 +211,7 @@ class ManifestModuleWrappedMethodIL : MethodIL, IEcmaMethodIL, IMethodTokensAreU { int _maxStack; bool _isInitLocals; - MethodDesc _owningMethod; + EcmaMethod _owningMethod; ILExceptionRegion[] _exceptionRegions; byte[] _ilBytes; LocalVariableDefinition[] _locals; @@ -226,7 +226,7 @@ public bool Initialize(MutableModule mutableModule, EcmaMethodIL wrappedMethod) try { Debug.Assert(mutableModule.ModuleThatIsCurrentlyTheSourceOfNewReferences == null); - mutableModule.ModuleThatIsCurrentlyTheSourceOfNewReferences = ((EcmaMethod)wrappedMethod.OwningMethod).Module; + mutableModule.ModuleThatIsCurrentlyTheSourceOfNewReferences = wrappedMethod.OwningMethod.Module; var owningMethodHandle = mutableModule.TryGetEntityHandle(wrappedMethod.OwningMethod); if (!owningMethodHandle.HasValue) return false; @@ -254,7 +254,7 @@ public bool Initialize(MutableModule mutableModule, EcmaMethodIL wrappedMethod) ILTokenReplacer.Replace(_ilBytes, GetMutableModuleToken); #if DEBUG - Debug.Assert(ReadyToRunStandaloneMethodMetadata.Compute((EcmaMethod)_owningMethod) != null); + Debug.Assert(ReadyToRunStandaloneMethodMetadata.Compute(_owningMethod) != null); #endif // DEBUG } finally diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs index 92302c2181d398..2bde41e031f496 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs @@ -1419,7 +1419,7 @@ private ModuleToken HandleToModuleToken(ref CORINFO_RESOLVED_TOKEN pResolvedToke resultField = resultField.GetTypicalFieldDefinition(); Debug.Assert(resultField is EcmaField); - Debug.Assert(_compilation.NodeFactory.CompilationModuleGroup.VersionsWithType(((EcmaField)resultField).OwningType) || ((MetadataType)resultField.OwningType).IsNonVersionable()); + Debug.Assert(_compilation.NodeFactory.CompilationModuleGroup.VersionsWithType(resultField.OwningType) || resultField.OwningType.IsNonVersionable()); token = (mdToken)MetadataTokens.GetToken(((EcmaField)resultField).Handle); module = ((EcmaField)resultField).Module; } @@ -1429,7 +1429,7 @@ private ModuleToken HandleToModuleToken(ref CORINFO_RESOLVED_TOKEN pResolvedToke { Debug.Assert(_compilation.NodeFactory.CompilationModuleGroup.VersionsWithType(ecmaType)); token = (mdToken)MetadataTokens.GetToken(ecmaType.Handle); - module = ecmaType.EcmaModule; + module = ecmaType.Module; } else { diff --git a/src/coreclr/tools/aot/ILCompiler.RyuJit/JitInterface/CorInfoImpl.RyuJit.cs b/src/coreclr/tools/aot/ILCompiler.RyuJit/JitInterface/CorInfoImpl.RyuJit.cs index 3c7f75281ebc7d..8c499dcea4a7bd 100644 --- a/src/coreclr/tools/aot/ILCompiler.RyuJit/JitInterface/CorInfoImpl.RyuJit.cs +++ b/src/coreclr/tools/aot/ILCompiler.RyuJit/JitInterface/CorInfoImpl.RyuJit.cs @@ -829,7 +829,7 @@ private bool canTailCall(CORINFO_METHOD_STRUCT_* callerHnd, CORINFO_METHOD_STRUC MethodDesc caller = HandleToObject(callerHnd); if (caller.OwningType is EcmaType ecmaOwningType - && ecmaOwningType.EcmaModule.EntryPoint == caller) + && ecmaOwningType.Module.EntryPoint == caller) { // Do not tailcall from the application entrypoint. // We want Main to be visible in stack traces. @@ -2173,7 +2173,7 @@ private void getFieldInfo(ref CORINFO_RESOLVED_TOKEN pResolvedToken, CORINFO_MET ((target.OperatingSystem == TargetOS.Linux) && (target.Architecture is TargetArchitecture.X64 or TargetArchitecture.ARM64))) { - ISortableSymbolNode index = _compilation.NodeFactory.TypeThreadStaticIndex((MetadataType)field.OwningType); + ISortableSymbolNode index = _compilation.NodeFactory.TypeThreadStaticIndex(field.OwningType); if (index is TypeThreadStaticIndexNode ti) { if (ti.IsInlined) @@ -2197,12 +2197,12 @@ private void getFieldInfo(ref CORINFO_RESOLVED_TOKEN pResolvedToken, CORINFO_MET if (field.HasGCStaticBase) { pResult->fieldLookup.accessType = InfoAccessType.IAT_PVALUE; - baseAddr = _compilation.NodeFactory.TypeGCStaticsSymbol((MetadataType)field.OwningType); + baseAddr = _compilation.NodeFactory.TypeGCStaticsSymbol(field.OwningType); } else { pResult->fieldLookup.accessType = InfoAccessType.IAT_VALUE; - baseAddr = _compilation.NodeFactory.TypeNonGCStaticsSymbol((MetadataType)field.OwningType); + baseAddr = _compilation.NodeFactory.TypeNonGCStaticsSymbol(field.OwningType); } pResult->fieldLookup.addr = (void*)ObjectToHandle(baseAddr); } diff --git a/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/TestCasesRunner/AssemblyQualifiedToken.cs b/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/TestCasesRunner/AssemblyQualifiedToken.cs index 01bf36d8e936d2..6ccf7e69451f62 100644 --- a/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/TestCasesRunner/AssemblyQualifiedToken.cs +++ b/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/TestCasesRunner/AssemblyQualifiedToken.cs @@ -29,8 +29,8 @@ public AssemblyQualifiedToken(TypeSystemEntity entity) EcmaType type => (type.Module.Assembly.GetName().Name, MetadataTokens.GetToken(type.Handle)), EcmaMethod method => (method.Module.Assembly.GetName().Name, MetadataTokens.GetToken(method.Handle)), EcmaField field => (field.Module.Assembly.GetName().Name, MetadataTokens.GetToken(field.Handle)), - PropertyPseudoDesc property => (((EcmaType)property.OwningType).Module.Assembly.GetName().Name, MetadataTokens.GetToken(property.Handle)), - EventPseudoDesc @event => (((EcmaType)@event.OwningType).Module.Assembly.GetName().Name, MetadataTokens.GetToken(@event.Handle)), + PropertyPseudoDesc property => (property.OwningType.Module.Assembly.GetName().Name, MetadataTokens.GetToken(property.Handle)), + EventPseudoDesc @event => (@event.OwningType.Module.Assembly.GetName().Name, MetadataTokens.GetToken(@event.Handle)), ILStubMethod => (null, 0), // Ignore compiler generated methods MetadataType mt when mt.GetType().Name == "BoxedValueType" => (null, 0), _ => throw new NotSupportedException($"The infra doesn't support getting a token for {entity} yet.") diff --git a/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/TestCasesRunner/MemberAssertionsCollector.cs b/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/TestCasesRunner/MemberAssertionsCollector.cs index 6fb3ef8be2a3b7..7716fbf5674bed 100644 --- a/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/TestCasesRunner/MemberAssertionsCollector.cs +++ b/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/TestCasesRunner/MemberAssertionsCollector.cs @@ -89,7 +89,7 @@ private static bool IsMemberAssertion(MetadataType attributeType) if (t.GetName() == nameof(BaseMemberAssertionAttribute)) return true; - t = t.MetadataBaseType; + t = t.BaseType; } return false; @@ -164,7 +164,7 @@ private static void CollectMemberAssertions(MetadataType metadataType, List<(Typ private static IEnumerable GetCustomAttributes(EcmaType type) { var metadataReader = type.MetadataReader; - return GetCustomAttributes(metadataReader.GetTypeDefinition(type.Handle).GetCustomAttributes(), metadataReader, type.EcmaModule); + return GetCustomAttributes(metadataReader.GetTypeDefinition(type.Handle).GetCustomAttributes(), metadataReader, type.Module); } private static IEnumerable GetCustomAttributes(EcmaMethod method) @@ -181,12 +181,12 @@ private static IEnumerable GetCustomAttributes(EcmaField field) private static IEnumerable GetCustomAttributes(EcmaType type, PropertyPseudoDesc prop) { - return GetCustomAttributes(prop.GetCustomAttributes, type.MetadataReader, type.EcmaModule); + return GetCustomAttributes(prop.GetCustomAttributes, type.MetadataReader, type.Module); } private static IEnumerable GetCustomAttributes(EcmaType type, EventPseudoDesc @event) { - return GetCustomAttributes(@event.GetCustomAttributes, type.MetadataReader, type.EcmaModule); + return GetCustomAttributes(@event.GetCustomAttributes, type.MetadataReader, type.Module); } private static IEnumerable GetCustomAttributes(CustomAttributeHandleCollection attributeHandles, MetadataReader metadataReader, EcmaModule module) diff --git a/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/Tests/DocumentationSignatureParserTests.cs b/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/Tests/DocumentationSignatureParserTests.cs index 0cf4d0b0c55d72..93fa2dcd2e0795 100644 --- a/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/Tests/DocumentationSignatureParserTests.cs +++ b/src/coreclr/tools/aot/ILCompiler.Trimming.Tests/Tests/DocumentationSignatureParserTests.cs @@ -105,7 +105,7 @@ private static void CheckUnresolvedDocumentationSignature(TypeSystemEntity membe return entity switch { MethodDesc method => (method.OwningType as MetadataType)?.Module, - FieldDesc field => (field.OwningType as MetadataType)?.Module, + FieldDesc field => field.OwningType?.Module, MetadataType type => type.Module, PropertyPseudoDesc property => property.OwningType.Module, EventPseudoDesc @event => @event.OwningType.Module, diff --git a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemField.cs b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemField.cs index 7104bb3f727a48..d551c1eafcc2ed 100644 --- a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemField.cs +++ b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemField.cs @@ -26,7 +26,7 @@ public TypeRefTypeSystemField(TypeRefTypeSystemType type, ReadOnlySpan nam } public override ReadOnlySpan Name => _name; - public override DefType OwningType => _type; + public override MetadataType OwningType => _type; public override TypeDesc FieldType => _fieldType; diff --git a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs index 0c2416f58ab707..5ff4d1415ca83f 100644 --- a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs +++ b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs @@ -156,9 +156,7 @@ public FieldDesc GetOrAddField(ReadOnlySpan name, TypeDesc fieldType, Embe public override ModuleDesc Module => _module; - public override DefType BaseType => MetadataBaseType; - - public override MetadataType MetadataBaseType + public override MetadataType BaseType { get { @@ -174,7 +172,7 @@ public override MetadataType MetadataBaseType public override bool IsAbstract => throw new NotImplementedException(); - public override DefType ContainingType => _containingType; + public override TypeRefTypeSystemType ContainingType => _containingType; public override DefType[] ExplicitlyImplementedInterfaces => Array.Empty(); diff --git a/src/tests/ilverify/ILMethodTester.cs b/src/tests/ilverify/ILMethodTester.cs index 1dea2366dcb5d7..2f70020c321dd2 100644 --- a/src/tests/ilverify/ILMethodTester.cs +++ b/src/tests/ilverify/ILMethodTester.cs @@ -58,7 +58,7 @@ private static IEnumerable Verify(TestCase testCase) { EcmaModule module = TestDataLoader.GetModuleForTestAssembly(testCase.ModuleName); var methodHandle = (MethodDefinitionHandle) MetadataTokens.EntityHandle(testCase.MetadataToken); - var method = (EcmaMethod)module.GetMethod(methodHandle); + var method = module.GetMethod(methodHandle); var verifier = new Verifier((ILVerifyTypeSystemContext)method.Context, new VerifierOptions { IncludeMetadataTokensInErrorMessages = true, diff --git a/src/tests/ilverify/ILTypeVerificationTester.cs b/src/tests/ilverify/ILTypeVerificationTester.cs index 2e35b6f63ebb29..0dbfe24d0bf21e 100644 --- a/src/tests/ilverify/ILTypeVerificationTester.cs +++ b/src/tests/ilverify/ILTypeVerificationTester.cs @@ -58,7 +58,7 @@ private static IEnumerable Verify(TestCase testCase) { EcmaModule module = TestDataLoader.GetModuleForTestAssembly(testCase.ModuleName); var typeHandle = (TypeDefinitionHandle)MetadataTokens.EntityHandle(testCase.MetadataToken); - var type = (EcmaType)module.GetType(typeHandle); + EcmaType type = module.GetType(typeHandle); var verifier = new Verifier((ILVerifyTypeSystemContext)type.Context, new VerifierOptions { IncludeMetadataTokensInErrorMessages = true, diff --git a/src/tests/ilverify/TestDataLoader.cs b/src/tests/ilverify/TestDataLoader.cs index 92769dc2a028a9..ea490973255db8 100644 --- a/src/tests/ilverify/TestDataLoader.cs +++ b/src/tests/ilverify/TestDataLoader.cs @@ -173,7 +173,7 @@ private static List GetTestMethodsFromDll(Func