diff --git a/src/coreclr/tools/Common/TypeSystem/IL/Stubs/ValueTypeGetFieldHelperMethodOverride.Sorting.cs b/src/coreclr/tools/Common/TypeSystem/IL/Stubs/GetFieldHelperMethodOverride.Sorting.cs similarity index 76% rename from src/coreclr/tools/Common/TypeSystem/IL/Stubs/ValueTypeGetFieldHelperMethodOverride.Sorting.cs rename to src/coreclr/tools/Common/TypeSystem/IL/Stubs/GetFieldHelperMethodOverride.Sorting.cs index 2a650a278e24a9..ddc494d3da8dcb 100644 --- a/src/coreclr/tools/Common/TypeSystem/IL/Stubs/ValueTypeGetFieldHelperMethodOverride.Sorting.cs +++ b/src/coreclr/tools/Common/TypeSystem/IL/Stubs/GetFieldHelperMethodOverride.Sorting.cs @@ -5,13 +5,13 @@ namespace Internal.IL.Stubs { - public partial class ValueTypeGetFieldHelperMethodOverride + public partial class GetFieldHelperMethodOverride { protected override int ClassCode => 2036839816; protected override int CompareToImpl(MethodDesc other, TypeSystemComparer comparer) { - var otherMethod = (ValueTypeGetFieldHelperMethodOverride)other; + var otherMethod = (GetFieldHelperMethodOverride)other; return comparer.Compare(_owningType, otherMethod._owningType); } diff --git a/src/coreclr/tools/Common/TypeSystem/IL/Stubs/ValueTypeGetFieldHelperMethodOverride.cs b/src/coreclr/tools/Common/TypeSystem/IL/Stubs/GetFieldHelperMethodOverride.cs similarity index 95% rename from src/coreclr/tools/Common/TypeSystem/IL/Stubs/ValueTypeGetFieldHelperMethodOverride.cs rename to src/coreclr/tools/Common/TypeSystem/IL/Stubs/GetFieldHelperMethodOverride.cs index 73b362d8154ada..37a3ed8eb25cb2 100644 --- a/src/coreclr/tools/Common/TypeSystem/IL/Stubs/ValueTypeGetFieldHelperMethodOverride.cs +++ b/src/coreclr/tools/Common/TypeSystem/IL/Stubs/GetFieldHelperMethodOverride.cs @@ -13,16 +13,16 @@ namespace Internal.IL.Stubs { /// - /// Synthetic method override of "int ValueType.__GetFieldHelper(Int32, out MethodTable*)". This method is injected - /// into all value types that cannot have their Equals(object) and GetHashCode() methods operate on individual - /// bytes. The purpose of the override is to provide access to the value types' fields and their types. + /// Synthetic method override of "int __GetFieldHelper(Int32, out MethodTable*)" on ValueType and Attribute classes. This method is injected + /// into all attributes and valuetypes that cannot have their Equals(object) and GetHashCode() methods operate on individual + /// bytes. The purpose of the override is to provide access to the fields and their types. /// - public sealed partial class ValueTypeGetFieldHelperMethodOverride : SpecializableILStubMethod + public sealed partial class GetFieldHelperMethodOverride : SpecializableILStubMethod { private MetadataType _owningType; private MethodSignature _signature; - internal ValueTypeGetFieldHelperMethodOverride(MetadataType owningType) + internal GetFieldHelperMethodOverride(MetadataType owningType) { _owningType = owningType; } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.ValueTypeMethods.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GetFieldMethodOverrides.cs similarity index 93% rename from src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.ValueTypeMethods.cs rename to src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GetFieldMethodOverrides.cs index 280a85081829d2..305960c8fb31e9 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.ValueTypeMethods.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GetFieldMethodOverrides.cs @@ -16,7 +16,7 @@ public partial class CompilerTypeSystemContext private MethodDesc _objectEqualsMethod; private MetadataType _iAsyncStateMachineType; - private sealed class ValueTypeMethodHashtable : LockFreeReaderHashtable + private sealed class GetFieldMethodHashtable : LockFreeReaderHashtable { protected override int GetKeyHashCode(MetadataType key) => key.GetHashCode(); protected override int GetValueHashCode(MethodDesc value) => value.OwningType.GetHashCode(); @@ -25,11 +25,11 @@ private sealed class ValueTypeMethodHashtable : LockFreeReaderHashtable GetAllMethodsForValueType(TypeDesc valueType, bool virtualOnly) { @@ -37,7 +37,7 @@ protected virtual IEnumerable GetAllMethodsForValueType(TypeDesc val if (RequiresValueTypeGetFieldHelperMethod((MetadataType)valueTypeDefinition)) { - MethodDesc getFieldHelperMethod = _valueTypeMethodHashtable.GetOrCreateValue((MetadataType)valueTypeDefinition); + MethodDesc getFieldHelperMethod = _getFieldMethodHashtable.GetOrCreateValue((MetadataType)valueTypeDefinition); if (valueType != valueTypeDefinition) { @@ -60,7 +60,7 @@ protected virtual IEnumerable GetAllMethodsForAttribute(TypeDesc att if (RequiresAttributeGetFieldHelperMethod(attributeTypeDefinition)) { - MethodDesc getFieldHelperMethod = _valueTypeMethodHashtable.GetOrCreateValue((MetadataType)attributeTypeDefinition); + MethodDesc getFieldHelperMethod = _getFieldMethodHashtable.GetOrCreateValue((MetadataType)attributeTypeDefinition); if (attributeType != attributeTypeDefinition) { diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/EETypeNode.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/EETypeNode.cs index 610ba7f653c613..423d845f8a4760 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/EETypeNode.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/EETypeNode.cs @@ -1003,7 +1003,7 @@ private void OutputVirtualSlots(NodeFactory factory, ref ObjectDataBuilder objDa if (isAsyncStateMachineValueType) { if ((declType.IsObject && (declMethod.Name.SequenceEqual("Equals"u8) || declMethod.Name.SequenceEqual("GetHashCode"u8)) && implMethod.OwningType.IsWellKnownType(WellKnownType.ValueType)) - || (declType.IsWellKnownType(WellKnownType.ValueType) && declMethod.Name.SequenceEqual(ValueTypeGetFieldHelperMethodOverride.MetadataName))) + || (declType.IsWellKnownType(WellKnownType.ValueType) && declMethod.Name.SequenceEqual(GetFieldHelperMethodOverride.MetadataName))) { shouldEmitImpl = false; } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/NoMetadataBlockingPolicy.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/NoMetadataBlockingPolicy.cs index 2b50dfc2c65a92..c1b9fbe4e7b1b7 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/NoMetadataBlockingPolicy.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/NoMetadataBlockingPolicy.cs @@ -54,7 +54,7 @@ public override bool IsBlocked(MethodDesc method) return true; // Also don't expose the ValueType.__GetFieldOverride method. - if (ecmaMethod.Name.SequenceEqual(Internal.IL.Stubs.ValueTypeGetFieldHelperMethodOverride.MetadataName) + if (ecmaMethod.Name.SequenceEqual(Internal.IL.Stubs.GetFieldHelperMethodOverride.MetadataName) && ecmaMethod.OwningType.IsWellKnownType(WellKnownType.ValueType)) return true; diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ObjectDataInterner.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ObjectDataInterner.cs index 8d212d17b58d83..7c8a0bbc7ae32c 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ObjectDataInterner.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ObjectDataInterner.cs @@ -33,7 +33,7 @@ public bool CanFold(MethodDesc method) if (!_genericsOnly || method.HasInstantiation || method.OwningType.HasInstantiation) return true; - if (method.GetTypicalMethodDefinition() is ValueTypeGetFieldHelperMethodOverride) + if (method.GetTypicalMethodDefinition() is GetFieldHelperMethodOverride) return true; return false; diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/ILCompiler.Compiler.csproj b/src/coreclr/tools/aot/ILCompiler.Compiler/ILCompiler.Compiler.csproj index 0b6f858708e99d..bbd54bbfd06559 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/ILCompiler.Compiler.csproj +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/ILCompiler.Compiler.csproj @@ -77,11 +77,11 @@ IL\Stubs\StructMarshallingThunk.Sorting.cs - - IL\Stubs\ValueTypeGetFieldHelperMethodOverride.cs + + IL\Stubs\GetFieldHelperMethodOverride.cs - - IL\Stubs\ValueTypeGetFieldHelperMethodOverride.Sorting.cs + + IL\Stubs\GetFieldHelperMethodOverride.Sorting.cs TypeSystem\Interop\IL\InlineArrayType.Sorting.cs @@ -397,7 +397,7 @@ - +