1 write to _type
ILCompiler.Compiler (1)
Compiler\DependencyAnalysis\EETypeNode.cs (1)
92_type = type;
150 references to _type
ILCompiler.Compiler (150)
Compiler\DependencyAnalysis\ConstructedEETypeNode.cs (15)
32if (_type.IsIDynamicInterfaceCastable) 40sink.Add(factory.MetadataTypeSymbol(_type), "MetadataType for constructed type"); 42DefType closestDefType = _type.GetClosestDefType(); 44if (_type.IsArray) 48sink.Add(factory.ConstructedTypeSymbol(_type.BaseType), "Array base type"); 50ArrayType arrayType = (ArrayType)_type; 61if (!_type.IsCanonicalSubtype(CanonicalFormKind.Any)) 63factory.InteropStubManager.AddInterestingInteropConstructedTypeDependencies(sink, factory, _type); 69return _type.BaseType != null ? factory.ConstructedTypeSymbol(_type.BaseType.NormalizeInstantiation()) : null; 74Debug.Assert(!_type.IsCanonicalSubtype(CanonicalFormKind.Any)); 75return factory.SerializedMetadataRuntimeTypeObject(_type); 80return factory.ConstructedTypeSymbol(((ArrayType)_type).ElementType); 89protected override int GCDescSize => GCDescEncoder.GetGCDescSize(_type); 93GCDescEncoder.EncodeGCDesc(ref builder, _type);
Compiler\DependencyAnalysis\EETypeNode.cs (105)
93_writableDataNode = !_type.IsCanonicalSubtype(CanonicalFormKind.Any) ? new WritableDataNode(this) : null; 194_mightHaveInterfaceDispatchMap = EmitVirtualSlots && InterfaceDispatchMapNode.MightHaveInterfaceDispatchMap(_type, factory); 204return factory.MetadataTypeSymbol(_type).Marked; 209return factory.NecessaryTypeSymbol(_type); 212public TypeDesc Type => _type; 222public int MinimumObjectSize => EETypeBuilderHelpers.GetMinimumObjectSize(_type.Context); 235sb.Append(nameMangler.NodeMangler.MethodTable(_type)); 241public override bool IsShareable => IsTypeNodeShareable(_type); 247if (_type.IsArrayTypeWithoutGenericInterfaces()) 250if (!_type.Context.SupportsCanon) 254if (_type.IsCanonicalSubtype(CanonicalFormKind.Any)) 258return (_type.ConvertToCanonForm(CanonicalFormKind.Specific) != _type); 277if (_type.RuntimeInterfaces.Length > 0) 294DefType currentType = _type.GetClosestDefType(); 297if (currentType == _type || (currentType is MetadataType mdType && mdType.IsAbstract)) 320factory.MetadataManager.GetConditionalDependenciesDueToEETypePresence(sink, factory, _type, allocated: EmitVirtualSlots); 322if (!_type.IsCanonicalSubtype(CanonicalFormKind.Any)) 324foreach (DefType iface in _type.RuntimeInterfaces) 335IEETypeNode maximallyConstructableType = factory.MaximallyConstructableType(_type); 344sink.Add(new CombinedDependencyListEntry(maximallyConstructableType, factory.MaximallyConstructableType(_type.ConvertToCanonForm(CanonicalFormKind.Specific)), "Trigger full type generation if canonical form exists")); 349TypeDesc canonOwningType = _type.ConvertToCanonForm(CanonicalFormKind.Specific); 350if (_type.IsDefType && _type != canonOwningType) 353factory.GenericStaticBaseInfo((MetadataType)_type), 361DefType defType = _type.GetClosestDefType(); 422_type == defType || 423((System.Collections.IStructuralEquatable)defType.RuntimeInterfaces).Equals(_type.RuntimeInterfaces, 446bool isVariantInterfaceImpl = VariantInterfaceMethodUseNode.IsVariantInterfaceImplementation(factory, _type, interfaceType); 591if (_type.IsInterface) 592sink.Add(factory.InterfaceUse(_type.GetTypeDefinition()), "Interface is used"); 598if (_type.IsArrayTypeWithoutGenericInterfaces()) 600IEETypeNode maximallyConstructableType = factory.MaximallyConstructableType(_type); 609if (!_type.IsArrayTypeWithoutGenericInterfaces()) 612sink.Add(new DependencyListEntry(factory.SealedVTable(_type.ConvertToCanonForm(CanonicalFormKind.Specific)), "Sealed Vtable")); 618foreach (TypeDesc intface in _type.RuntimeInterfaces) 624TypeDesc canonicalType = _type.ConvertToCanonForm(CanonicalFormKind.Specific); 625if (canonicalType != _type) 630if (factory.CompilationModuleGroup.PresenceOfEETypeImpliesAllMethodsOnType(_type)) 632if (_type.IsArray || _type.IsDefType) 645foreach (var method in _type.GetClosestDefType().ConvertToCanonForm(CanonicalFormKind.Specific).GetAllMethodsAndAsyncVariants()) 656if (!ConstructedEETypeNode.CreationAllowed(_type)) 660factory.MetadataManager.GetDependenciesDueToEETypePresence(sink, factory, _type); 663if (_type is MetadataType mdType) 667if (_type.IsFunctionPointer) 668FunctionPointerMapNode.AddHashtableDependencies(sink, factory, (FunctionPointerType)_type); 689objData.EmitInt(_type.GetHashCode()); 696OutputVirtualSlots(factory, ref objData, _type, _type, relocsOnly); 750uint flags = EETypeBuilderHelpers.ComputeFlags(_type); 752if (_type.GetTypeDefinition() == factory.TypeSystemContext.ArrayOfTEnumeratorType) 758if (factory.TypeSystemContext.IsGenericArrayInterfaceType(_type)) 766if (EmitVirtualSlots && !_type.IsArrayTypeWithoutGenericInterfaces()) 768SealedVTableNode sealedVTable = factory.SealedVTable(_type.ConvertToCanonForm(CanonicalFormKind.Specific)); 778if (_type.IsArray || _type.IsString) 787if (_type.IsArray) 789TypeDesc elementType = ((ArrayType)_type).ElementType; 794else if (_type.IsString) 800ushort flagsEx = EETypeBuilderHelpers.ComputeFlagsEx(_type); 811return EETypeBuilderHelpers.ComputeBaseSize(_type); 817return _type.BaseType != null ? factory.NecessaryTypeSymbol(_type.BaseType.NormalizeInstantiation()) : null; 822Debug.Assert(!_type.IsCanonicalSubtype(CanonicalFormKind.Any)); 823return factory.SerializedNecessaryRuntimeTypeObject(_type); 828return factory.NecessaryTypeSymbol(((ArrayType)_type).ElementType); 835if (_type.IsParameterizedType) 837var parameterType = ((ParameterizedType)_type).ParameterType; 838if (_type.IsArray && parameterType.IsValueType && !parameterType.IsNullable) 850else if (_type.IsFunctionPointer) 852relatedTypeNode = factory.NecessaryTypeSymbol(((FunctionPointerType)_type).Signature.ReturnType); 856TypeDesc baseType = _type.BaseType; 930if (_type.IsInterface) 1015if (_type.IsCanonicalSubtype(CanonicalFormKind.Any)) 1019foreach (DefType itf in _type.RuntimeInterfaces) 1031foreach (var itf in _type.RuntimeInterfaces) 1046if (_type.HasFinalizer) 1048MethodDesc finalizerMethod = _type.GetFinalizer(); 1085if (EmitVirtualSlots && !_type.IsArrayTypeWithoutGenericInterfaces()) 1088SealedVTableNode sealedVTable = factory.SealedVTable(_type.ConvertToCanonForm(CanonicalFormKind.Specific)); 1102if (_type.HasInstantiation) 1104if (!_type.IsTypeDefinition) 1107factory.MetadataTypeSymbol(_type.GetTypeDefinition()) : factory.NecessaryTypeSymbol(_type.GetTypeDefinition()); 1116&& factory.MetadataManager.IsTypeInstantiationReflectionVisible(_type)) 1118compositionNode = _type.Instantiation.Length > 1 1119? factory.MetadataEnabledGenericComposition(_type.Instantiation) 1120: factory.MaximallyMetadataEnabledType(_type.Instantiation[0]); 1124compositionNode = _type.Instantiation.Length > 1 1125? factory.GenericComposition(_type.Instantiation) 1126: factory.NecessaryTypeSymbol(_type.Instantiation[0]); 1137if (_type == factory.TypeSystemContext.ArrayOfTEnumeratorType) 1142else if (factory.TypeSystemContext.IsGenericArrayInterfaceType(_type)) 1147details = new GenericVarianceDetails(_type); 1149else if (_type.HasVariance) 1151details = new GenericVarianceDetails(_type); 1172if (_type.IsFunctionPointer) 1174MethodSignature sig = ((FunctionPointerType)_type).Signature; 1190ISymbolNode dispatchMap = factory.InterfaceDispatchMap(_type.ConvertToCanonForm(CanonicalFormKind.Specific)); 1200Debug.Assert(_type.IsTypeDefinition || !_type.HasSameTypeDefinition(context.ArrayOfTClass), "Asking for Array<T> MethodTable"); 1207return comparer.Compare(_type, ((EETypeNode)other)._type); 1212return _type.ToString();
Compiler\DependencyAnalysis\GenericDefinitionEETypeNode.cs (13)
27return factory.NecessaryTypeSymbol(_type); 37uint flags = EETypeBuilderHelpers.ComputeFlags(_type); 42if (_type == factory.TypeSystemContext.ArrayOfTEnumeratorType || factory.TypeSystemContext.IsGenericArrayInterfaceType(_type)) 45if (_type.IsByRefLike) 49dataBuilder.EmitInt(checked((ushort)_type.Instantiation.Length)); // Base size (we put instantiation length) 53dataBuilder.EmitInt(_type.GetHashCode()); 73return factory.MetadataTypeSymbol(_type).Marked; 96return factory.SerializedMetadataRuntimeTypeObject(_type); 103if (_type.IsInterface) 104sink.Add(factory.InterfaceUse(_type.GetTypeDefinition()), "Interface is used"); 106sink.Add(factory.NecessaryTypeSymbol(_type), "Reflection invisible type for a visible type"); 109factory.MetadataManager.GetDependenciesDueToEETypePresence(sink, factory, _type);
Compiler\DependencyAnalysis\MetadataEETypeNode.cs (17)
26if (ConstructedEETypeNode.CreationAllowed(_type)) 27return factory.ConstructedTypeSymbol(_type).Marked; 39sink.Add(factory.NecessaryTypeSymbol(_type), "NecessaryType for metadata type"); 41if (_type is MetadataType mdType) 45factory.MetadataManager.GetDependenciesDueToEETypePresence(sink, factory, _type); 49if (_type.IsValueType) 50sink.Add(factory.MaximallyConstructableType(_type), "Reflection visible valuetype"); 53if (_type.IsDelegate) 54sink.Add(factory.MaximallyConstructableType(_type), "Reflection visible delegate"); 57if (_type.IsArray) 58sink.Add(factory.MaximallyConstructableType(_type), "Reflection visible array"); 64foreach (MetadataType intface in _type.RuntimeInterfaces) 76sink.Add(factory.MaximallyConstructableType(_type), "Has static virtual methods"); 81return _type.BaseType != null ? factory.MetadataTypeSymbol(_type.BaseType.NormalizeInstantiation()) : null; 86return factory.SerializedMetadataRuntimeTypeObject(_type); 91return factory.MetadataTypeSymbol(((ArrayType)_type).ElementType);