CodeGen\PrivateImplementationDetails.cs (41)
53internal readonly Cci.ITypeReference SystemObject; //base type
54private readonly Cci.ITypeReference _systemValueType; //base for nested structs
56private readonly Cci.ITypeReference _systemInt8Type; //for metadata init of byte arrays
57private readonly Cci.ITypeReference _systemInt16Type; //for metadata init of short arrays
58private readonly Cci.ITypeReference _systemInt32Type; //for metadata init of int arrays
59private readonly Cci.ITypeReference _systemInt64Type; //for metadata init of long arrays
98private readonly ConcurrentDictionary<(uint Size, ushort Alignment), Cci.ITypeReference> _dataFieldTypes = new ConcurrentDictionary<(uint Size, ushort Alignment), Cci.ITypeReference>();
112Cci.ITypeReference systemObject,
113Cci.ITypeReference systemValueType,
114Cci.ITypeReference systemInt8Type,
115Cci.ITypeReference systemInt16Type,
116Cci.ITypeReference systemInt32Type,
117Cci.ITypeReference systemInt64Type,
247private Cci.ITypeReference GetOrAddDataFieldType(int length, ushort alignment)
301Cci.ITypeReference type = @this.GetOrAddDataFieldType(data.Length, alignment);
407internal Cci.IFieldReference GetModuleVersionId(Cci.ITypeReference mvidType)
419internal Cci.IFieldReference GetModuleCancellationToken(Cci.ITypeReference cancellationTokenType)
431internal Cci.IFieldReference GetOrAddInstrumentationPayloadRoot(int analysisKind, Cci.ITypeReference payloadRootType)
527public override Cci.ITypeReference GetBaseClass(EmitContext context) => SystemObject;
691private readonly Cci.ITypeReference _sysValueType;
693internal ExplicitSizeStruct(uint size, ushort alignment, PrivateImplementationDetails containingType, Cci.ITypeReference sysValueType)
705public override Cci.ITypeReference GetBaseClass(EmitContext context) => _sysValueType;
792public override Cci.ITypeReference GetBaseClass(EmitContext context) => _containingType.SystemObject;
804public override Cci.ITypeReference GetType(EmitContext context)
818private readonly Cci.ITypeReference _type;
820internal SynthesizedStaticField(string name, Cci.INamedTypeDefinition containingType, Cci.ITypeReference type)
828internal Cci.ITypeReference Type => _type;
832public override Cci.ITypeReference GetType(EmitContext context) => _type;
882public Cci.ITypeReference GetContainingType(EmitContext context) => _containingType;
903public abstract Cci.ITypeReference GetType(EmitContext context);
933internal ModuleVersionIdField(Cci.INamedTypeDefinition containingType, Cci.ITypeReference type)
945internal sealed class ModuleCancellationTokenField(Cci.INamedTypeDefinition containingType, Cci.ITypeReference type)
954internal InstrumentationPayloadRootField(Cci.INamedTypeDefinition containingType, int analysisIndex, Cci.ITypeReference payloadType)
970internal MappedField(string name, Cci.INamedTypeDefinition containingType, Cci.ITypeReference type, ImmutableArray<byte> block)
986internal CachedArrayField(string name, Cci.INamedTypeDefinition containingType, Cci.ITypeReference type)
1011public Cci.ITypeReference GetContainingType(EmitContext context) => ContainingTypeDefinition;
1124public abstract Cci.ITypeReference GetBaseClass(EmitContext context);
1220public override Cci.ITypeReference GetType(EmitContext context) => context.Module.GetPlatformType(Cci.PlatformType.SystemString, context);
1230public override Cci.ITypeReference GetType(EmitContext context)
1244public override Cci.ITypeReference GetType(EmitContext context) => context.Module.GetPlatformType(Cci.PlatformType.SystemInt32, context);
Emit\CommonPEModuleBuilder.cs (12)
155internal abstract Cci.ITypeReference Translate(ITypeSymbolInternal symbol, SyntaxNode syntaxOpt, DiagnosticBag diagnostics);
174internal abstract Cci.ITypeReference EncTranslateType(ITypeSymbolInternal type, DiagnosticBag diagnostics);
225public abstract Cci.ITypeReference GetPlatformType(Cci.PlatformType platformType, EmitContext context);
226public abstract bool IsPlatformType(Cci.ITypeReference typeRef, Cci.PlatformType platformType);
709internal sealed override Cci.ITypeReference EncTranslateType(ITypeSymbolInternal type, DiagnosticBag diagnostics)
714internal virtual Cci.ITypeReference EncTranslateLocalVariableType(TTypeSymbol type, DiagnosticBag diagnostics)
798internal abstract Cci.ITypeReference Translate(TTypeSymbol symbol, TSyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics);
806internal sealed override Cci.ITypeReference Translate(ITypeSymbolInternal symbol, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
835internal Cci.IFieldReference GetModuleVersionId(Cci.ITypeReference mvidType, TSyntaxNode syntaxOpt, DiagnosticBag diagnostics)
843internal Cci.IFieldReference GetModuleCancellationToken(Cci.ITypeReference cancellationTokenType, TSyntaxNode syntaxOpt, DiagnosticBag diagnostics)
846internal Cci.IFieldReference GetInstrumentationPayloadRoot(int analysisKind, Cci.ITypeReference payloadType, TSyntaxNode syntaxOpt, DiagnosticBag diagnostics)
1180public sealed override Cci.ITypeReference GetPlatformType(Cci.PlatformType platformType, EmitContext context)
PEWriter\MetadataWriter.cs (44)
350protected abstract bool TryGetTypeReferenceHandle(ITypeReference reference, out TypeReferenceHandle handle);
357protected abstract TypeReferenceHandle GetOrAddTypeReferenceHandle(ITypeReference reference);
363protected abstract IReadOnlyList<ITypeReference> GetTypeRefs();
370protected abstract TypeSpecificationHandle GetOrAddTypeSpecificationHandle(ITypeReference reference);
376protected abstract IReadOnlyList<ITypeReference> GetTypeSpecs();
439private readonly Dictionary<ITypeReference, BlobHandle> _typeSpecSignatureIndex = new Dictionary<ITypeReference, BlobHandle>(ReferenceEqualityComparer.Instance);
641public static IUnitReference GetDefiningUnitReference(ITypeReference typeReference, EmitContext context)
957var containingType = memberRef.GetContainingType(Context);
1054foreach (ITypeReference typeReference in methodInstanceReference.GetGenericArguments(Context))
1056var typeRef = typeReference;
1594private TypeReferenceHandle GetTypeReferenceHandle(ITypeReference typeReference)
1617private TypeSpecificationHandle GetTypeSpecificationHandle(ITypeReference typeReference)
1642internal BlobHandle GetTypeSpecSignatureIndex(ITypeReference typeReference)
1659internal EntityHandle GetTypeHandle(ITypeReference typeReference, bool treatRefAsPotentialTypeSpec = true)
2797ITypeReference baseType = typeDef.GetBaseClass(Context);
2846foreach (ITypeReference typeRef in typeRefs)
2855ITypeReference scopeTypeRef;
2906foreach (ITypeReference typeSpec in typeSpecs)
3128ITypeReference typeReference => GetTypeHandle(typeReference),
3396var exceptionType = region.ExceptionType;
3430var type = parameterTypeInformation.GetType(Context);
3459foreach (ITypeReference genericArgument in genericMethodInstanceReference.GetGenericArguments(Context))
3461ITypeReference typeRef = genericArgument;
3516private void SerializeNamedArgumentType(in EmitContext context, NamedArgumentTypeEncoder encoder, ITypeReference type)
3532private void SerializeMetadataExpression(in EmitContext context, LiteralEncoder encoder, IMetadataExpression expression, ITypeReference targetType)
3536ITypeReference targetElementType;
3632case ITypeReference marshallerTypeRef:
3680var elementType = marshallingInformation.GetSafeArrayElementUserDefinedSubtype(Context);
3705private void SerializeTypeName(ITypeReference typeReference, BlobBuilder writer)
3792var returnType = signature.GetType(Context);
3833private void SerializeTypeReference(SignatureTypeEncoder encoder, ITypeReference typeReference)
3924ITypeReference uninstantiatedTypeReference = typeReference.GetUninstantiatedGenericType(Context);
3929var consolidatedTypeArguments = ArrayBuilder<ITypeReference>.GetInstance();
3937foreach (ITypeReference typeArgument in consolidatedTypeArguments)
4035var elementType = arrayTypeReference.GetElementType(Context);
4048private void SerializeCustomAttributeElementType(in EmitContext context, CustomAttributeElementTypeEncoder encoder, ITypeReference typeReference)
4141private int GetNumberOfInheritedTypeParameters(ITypeReference type)
4293protected sealed class TypeReferenceIndex : HeapOrReferenceIndexBase<ITypeReference>
4295private readonly Dictionary<ITypeReference, int> _index;
4298: this(writer, new Dictionary<ITypeReference, int>(ReferenceEqualityComparer.Instance), lastRowId)
4302private TypeReferenceIndex(MetadataWriter writer, Dictionary<ITypeReference, int> index, int lastRowId)
4309public override bool TryGetValue(ITypeReference item, out int index)
4314protected override void AddItem(ITypeReference item, int index)
PEWriter\TypeNameSerializer.cs (10)
19internal static string GetSerializedTypeName(this ITypeReference typeReference, EmitContext context)
25internal static string GetSerializedTypeName(this ITypeReference typeReference, EmitContext context, ref bool isAssemblyQualified)
91ITypeReference uninstantiatedTypeReference = typeReference.GetUninstantiatedGenericType(context);
94ArrayBuilder<ITypeReference> consolidatedTypeArguments = ArrayBuilder<ITypeReference>.GetInstance();
101foreach (ITypeReference argument in consolidatedTypeArguments)
141private static void AppendSerializedTypeName(StringBuilder sb, ITypeReference type, ref bool isAssemQualified, EmitContext context)
156private static void AppendAssemblyQualifierIfNecessary(StringBuilder sb, ITypeReference typeReference, out bool isAssemQualified, EmitContext context)
240private static ITypeReference UnwrapTypeReference(ITypeReference typeReference, EmitContext context)