1 write to _type
ILCompiler.Compiler (1)
Compiler\DependencyAnalysis\EETypeNode.cs (1)
91_type = type;
149 references to _type
ILCompiler.Compiler (149)
Compiler\DependencyAnalysis\ConstructedEETypeNode.cs (15)
31if (_type.IsIDynamicInterfaceCastable) 39dependencyList.Add(factory.MetadataTypeSymbol(_type), "MetadataType for constructed type"); 41DefType closestDefType = _type.GetClosestDefType(); 43if (_type.IsArray) 47dependencyList.Add(factory.ConstructedTypeSymbol(_type.BaseType), "Array base type"); 49ArrayType arrayType = (ArrayType)_type; 60if (!_type.IsCanonicalSubtype(CanonicalFormKind.Any)) 62factory.InteropStubManager.AddInterestingInteropConstructedTypeDependencies(ref dependencyList, factory, _type); 70return _type.BaseType != null ? factory.ConstructedTypeSymbol(_type.BaseType.NormalizeInstantiation()) : null; 75Debug.Assert(!_type.IsCanonicalSubtype(CanonicalFormKind.Any)); 76return factory.SerializedMetadataRuntimeTypeObject(_type); 81return factory.ConstructedTypeSymbol(((ArrayType)_type).ElementType); 90protected override int GCDescSize => GCDescEncoder.GetGCDescSize(_type); 94GCDescEncoder.EncodeGCDesc(ref builder, _type);
Compiler\DependencyAnalysis\EETypeNode.cs (106)
92_writableDataNode = !_type.IsCanonicalSubtype(CanonicalFormKind.Any) ? new WritableDataNode(this) : null; 193_mightHaveInterfaceDispatchMap = EmitVirtualSlots && InterfaceDispatchMapNode.MightHaveInterfaceDispatchMap(_type, factory); 203return factory.MetadataTypeSymbol(_type).Marked; 208return factory.NecessaryTypeSymbol(_type); 211public TypeDesc Type => _type; 221public int MinimumObjectSize => EETypeBuilderHelpers.GetMinimumObjectSize(_type.Context); 234sb.Append(nameMangler.NodeMangler.MethodTable(_type)); 240public override bool IsShareable => IsTypeNodeShareable(_type); 246if (_type.IsArrayTypeWithoutGenericInterfaces()) 249if (!_type.Context.SupportsCanon) 253if (_type.IsCanonicalSubtype(CanonicalFormKind.Any)) 257return (_type.ConvertToCanonForm(CanonicalFormKind.Specific) != _type); 276if (_type.RuntimeInterfaces.Length > 0) 293DefType currentType = _type.GetClosestDefType(); 296if (currentType == _type || (currentType is MetadataType mdType && mdType.IsAbstract)) 321factory.MetadataManager.GetConditionalDependenciesDueToEETypePresence(ref result, factory, _type, allocated: EmitVirtualSlots); 323if (!_type.IsCanonicalSubtype(CanonicalFormKind.Any)) 325foreach (DefType iface in _type.RuntimeInterfaces) 336IEETypeNode maximallyConstructableType = factory.MaximallyConstructableType(_type); 345result.Add(new CombinedDependencyListEntry(maximallyConstructableType, factory.MaximallyConstructableType(_type.ConvertToCanonForm(CanonicalFormKind.Specific)), "Trigger full type generation if canonical form exists")); 350TypeDesc canonOwningType = _type.ConvertToCanonForm(CanonicalFormKind.Specific); 351if (_type.IsDefType && _type != canonOwningType) 354factory.GenericStaticBaseInfo((MetadataType)_type), 362DefType defType = _type.GetClosestDefType(); 423_type == defType || 424((System.Collections.IStructuralEquatable)defType.RuntimeInterfaces).Equals(_type.RuntimeInterfaces, 447bool isVariantInterfaceImpl = VariantInterfaceMethodUseNode.IsVariantInterfaceImplementation(factory, _type, interfaceType); 596if (_type.IsInterface) 597dependencies.Add(factory.InterfaceUse(_type.GetTypeDefinition()), "Interface is used"); 603if (_type.IsArrayTypeWithoutGenericInterfaces()) 605IEETypeNode maximallyConstructableType = factory.MaximallyConstructableType(_type); 614if (!_type.IsArrayTypeWithoutGenericInterfaces()) 617dependencies.Add(new DependencyListEntry(factory.SealedVTable(_type.ConvertToCanonForm(CanonicalFormKind.Specific)), "Sealed Vtable")); 623foreach (TypeDesc intface in _type.RuntimeInterfaces) 629TypeDesc canonicalType = _type.ConvertToCanonForm(CanonicalFormKind.Specific); 630if (canonicalType != _type) 635if (factory.CompilationModuleGroup.PresenceOfEETypeImpliesAllMethodsOnType(_type)) 637if (_type.IsArray || _type.IsDefType) 650foreach (var method in _type.GetClosestDefType().ConvertToCanonForm(CanonicalFormKind.Specific).GetAllMethodsAndAsyncVariants()) 661if (!ConstructedEETypeNode.CreationAllowed(_type)) 665factory.MetadataManager.GetDependenciesDueToEETypePresence(ref dependencies, factory, _type); 668if (_type is MetadataType mdType) 672if (_type.IsFunctionPointer) 673FunctionPointerMapNode.GetHashtableDependencies(ref dependencies, factory, (FunctionPointerType)_type); 695objData.EmitInt(_type.GetHashCode()); 702OutputVirtualSlots(factory, ref objData, _type, _type, _type, relocsOnly); 756uint flags = EETypeBuilderHelpers.ComputeFlags(_type); 758if (_type.GetTypeDefinition() == factory.TypeSystemContext.ArrayOfTEnumeratorType) 764if (factory.TypeSystemContext.IsGenericArrayInterfaceType(_type)) 772if (EmitVirtualSlots && !_type.IsArrayTypeWithoutGenericInterfaces()) 774SealedVTableNode sealedVTable = factory.SealedVTable(_type.ConvertToCanonForm(CanonicalFormKind.Specific)); 784if (_type.IsArray || _type.IsString) 793if (_type.IsArray) 795TypeDesc elementType = ((ArrayType)_type).ElementType; 800else if (_type.IsString) 806ushort flagsEx = EETypeBuilderHelpers.ComputeFlagsEx(_type); 817return EETypeBuilderHelpers.ComputeBaseSize(_type); 823return _type.BaseType != null ? factory.NecessaryTypeSymbol(_type.BaseType.NormalizeInstantiation()) : null; 828Debug.Assert(!_type.IsCanonicalSubtype(CanonicalFormKind.Any)); 829return factory.SerializedNecessaryRuntimeTypeObject(_type); 834return factory.NecessaryTypeSymbol(((ArrayType)_type).ElementType); 841if (_type.IsParameterizedType) 843var parameterType = ((ParameterizedType)_type).ParameterType; 844if (_type.IsArray && parameterType.IsValueType && !parameterType.IsNullable) 856else if (_type.IsFunctionPointer) 858relatedTypeNode = factory.NecessaryTypeSymbol(((FunctionPointerType)_type).Signature.ReturnType); 862TypeDesc baseType = _type.BaseType; 959if (_type.IsInterface) 1044if (_type.IsCanonicalSubtype(CanonicalFormKind.Any)) 1048foreach (DefType itf in _type.RuntimeInterfaces) 1060foreach (var itf in _type.RuntimeInterfaces) 1075if (_type.HasFinalizer) 1077MethodDesc finalizerMethod = _type.GetFinalizer(); 1114if (EmitVirtualSlots && !_type.IsArrayTypeWithoutGenericInterfaces()) 1117SealedVTableNode sealedVTable = factory.SealedVTable(_type.ConvertToCanonForm(CanonicalFormKind.Specific)); 1131if (_type.HasInstantiation) 1133if (!_type.IsTypeDefinition) 1136factory.MetadataTypeSymbol(_type.GetTypeDefinition()) : factory.NecessaryTypeSymbol(_type.GetTypeDefinition()); 1145&& factory.MetadataManager.IsTypeInstantiationReflectionVisible(_type)) 1147compositionNode = _type.Instantiation.Length > 1 1148? factory.ConstructedGenericComposition(_type.Instantiation) 1149: factory.MaximallyConstructableType(_type.Instantiation[0]); 1153compositionNode = _type.Instantiation.Length > 1 1154? factory.GenericComposition(_type.Instantiation) 1155: factory.NecessaryTypeSymbol(_type.Instantiation[0]); 1166if (_type == factory.TypeSystemContext.ArrayOfTEnumeratorType) 1171else if (factory.TypeSystemContext.IsGenericArrayInterfaceType(_type)) 1176details = new GenericVarianceDetails(_type); 1178else if (_type.HasVariance) 1180details = new GenericVarianceDetails(_type); 1201if (_type.IsFunctionPointer) 1203MethodSignature sig = ((FunctionPointerType)_type).Signature; 1219ISymbolNode dispatchMap = factory.InterfaceDispatchMap(_type.ConvertToCanonForm(CanonicalFormKind.Specific)); 1229Debug.Assert(_type.IsTypeDefinition || !_type.HasSameTypeDefinition(context.ArrayOfTClass), "Asking for Array<T> MethodTable"); 1236return comparer.Compare(_type, ((EETypeNode)other)._type); 1241return _type.ToString();
Compiler\DependencyAnalysis\GenericDefinitionEETypeNode.cs (11)
26return factory.NecessaryTypeSymbol(_type); 36uint flags = EETypeBuilderHelpers.ComputeFlags(_type); 41if (_type == factory.TypeSystemContext.ArrayOfTEnumeratorType || factory.TypeSystemContext.IsGenericArrayInterfaceType(_type)) 44if (_type.IsByRefLike) 48dataBuilder.EmitInt(checked((ushort)_type.Instantiation.Length)); // Base size (we put instantiation length) 52dataBuilder.EmitInt(_type.GetHashCode()); 72return factory.MetadataTypeSymbol(_type).Marked; 96return factory.SerializedMetadataRuntimeTypeObject(_type); 105dependencyList.Add(factory.NecessaryTypeSymbol(_type), "Reflection invisible type for a visible type"); 108factory.MetadataManager.GetDependenciesDueToEETypePresence(ref dependencyList, factory, _type);
Compiler\DependencyAnalysis\MetadataEETypeNode.cs (17)
25if (ConstructedEETypeNode.CreationAllowed(_type)) 26return factory.ConstructedTypeSymbol(_type).Marked; 38dependencyList.Add(factory.NecessaryTypeSymbol(_type), "NecessaryType for metadata type"); 40if (_type is MetadataType mdType) 44factory.MetadataManager.GetDependenciesDueToEETypePresence(ref dependencyList, factory, _type); 48if (_type.IsValueType) 49dependencyList.Add(factory.MaximallyConstructableType(_type), "Reflection visible valuetype"); 52if (_type.IsDelegate) 53dependencyList.Add(factory.MaximallyConstructableType(_type), "Reflection visible delegate"); 56if (_type.IsArray) 57dependencyList.Add(factory.MaximallyConstructableType(_type), "Reflection visible array"); 63foreach (MetadataType intface in _type.RuntimeInterfaces) 75dependencyList.Add(factory.MaximallyConstructableType(_type), "Has static virtual methods"); 82return _type.BaseType != null ? factory.MetadataTypeSymbol(_type.BaseType.NormalizeInstantiation()) : null; 87return factory.SerializedMetadataRuntimeTypeObject(_type); 92return factory.MetadataTypeSymbol(((ArrayType)_type).ElementType);