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