11 instantiations of ValueSet
ILLink.RoslynAnalyzer (11)
DataFlow\FeatureChecksValue.cs (1)
27 EnabledFeatures = new ValueSet<string> (enabledFeature);
DataFlow\InterproceduralState.cs (1)
57 Methods = new ValueSet<MethodBodyValue> (methodsList);
ISymbolExtensions.cs (1)
87 return featureSet.Count == 0 ? ValueSet<string>.Empty : new ValueSet<string> (featureSet);
src\tools\illink\src\ILLink.Shared\DataFlow\ValueSet.cs (6)
29 public static readonly ValueSet<TValue> Unknown = new (UnknownSentinel); 160 public static implicit operator ValueSet<TValue> (TValue value) => new (value); 249 return new ValueSet<TValue> (values); 271 return new ValueSet<TValue> (values); 302 return new ValueSet<TValue> (copyValue.DeepCopy ()); 307 return new ValueSet<TValue> (GetKnownValues ().Select (value => value is IDeepCopyValue<TValue> copyValue ? copyValue.DeepCopy () : value));
src\tools\illink\src\ILLink.Shared\TrimAnalysis\ArrayValue.cs (1)
45 return new(input.AsEnumerable ().Select (v => v is ArrayValue ? UnknownValue.Instance : v));
TrimAnalysis\ArrayValue.cs (1)
18 result = MultiValueLattice.Meet (result, new MultiValue (new ArrayValue (sizeValue)));
191 references to ValueSet
ILLink.RoslynAnalyzer (191)
DataFlow\FeatureChecksValue.cs (13)
18 public ValueSet<string> EnabledFeatures; 19 public ValueSet<string> DisabledFeatures; 21 public static readonly FeatureChecksValue All = new FeatureChecksValue (ValueSet<string>.Unknown, ValueSet<string>.Empty); 23 public static readonly FeatureChecksValue None = new FeatureChecksValue (ValueSet<string>.Empty, ValueSet<string>.Empty); 28 DisabledFeatures = ValueSet<string>.Empty; 31 private FeatureChecksValue (ValueSet<string> enabled, ValueSet<string> disabled) 40 ValueSet<string>.Union (EnabledFeatures.DeepCopy (), other.EnabledFeatures.DeepCopy ()), 41 ValueSet<string>.Union (DisabledFeatures.DeepCopy (), other.DisabledFeatures.DeepCopy ())); 47 ValueSet<string>.Intersection (EnabledFeatures.DeepCopy (), other.EnabledFeatures.DeepCopy ()), 48 ValueSet<string>.Intersection (DisabledFeatures.DeepCopy (), other.DisabledFeatures.DeepCopy ()));
DataFlow\FeatureChecksVisitor.cs (1)
15 ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,
DataFlow\FeatureContextLattice.cs (6)
18 public ValueSet<string> EnabledFeatures; 20 public static readonly FeatureContext All = new FeatureContext (ValueSet<string>.Unknown); 22 public static readonly FeatureContext None = new FeatureContext (ValueSet<string>.Empty); 24 public FeatureContext (ValueSet<string> enabled) 48 return new FeatureContext (ValueSet<string>.Intersection (EnabledFeatures, other.EnabledFeatures)); 53 return new FeatureContext (ValueSet<string>.Union (EnabledFeatures, other.EnabledFeatures));
DataFlow\InterproceduralState.cs (2)
18 public ValueSet<MethodBodyValue> Methods; 30 ValueSet<MethodBodyValue> methods,
DataFlow\LocalDataFlowVisitor.cs (2)
399 var capturedReferences = state.Current.LocalState.CapturedReferences.Get (flowCaptureReference.Id); 528 var capturedReferences = state.Current.LocalState.CapturedReferences.Get (captureRef.Id);
DataFlow\LocalStateLattice.cs (8)
46 public DefaultValueDictionary<CaptureId, ValueSet<CapturedReferenceValue>> CapturedReferences; 50 new DefaultValueDictionary<CaptureId, ValueSet<CapturedReferenceValue>> (default (ValueSet<CapturedReferenceValue>))) 54 public LocalState (DefaultValueDictionary<LocalKey, TValue> dictionary, DefaultValueDictionary<CaptureId, ValueSet<CapturedReferenceValue>> capturedReferences) 61 : this (dictionary, new DefaultValueDictionary<CaptureId, ValueSet<CapturedReferenceValue>> (default (ValueSet<CapturedReferenceValue>))) 86 public readonly DictionaryLattice<CaptureId, ValueSet<CapturedReferenceValue>, ValueSetLattice<CapturedReferenceValue>> CapturedReferenceLattice; 91 CapturedReferenceLattice = new DictionaryLattice<CaptureId, ValueSet<CapturedReferenceValue>, ValueSetLattice<CapturedReferenceValue>> (default (ValueSetLattice<CapturedReferenceValue>));
ISymbolExtensions.cs (2)
80 internal static ValueSet<string> GetFeatureGuardAnnotations (this IPropertySymbol propertySymbol) 87 return featureSet.Count == 0 ? ValueSet<string>.Empty : new ValueSet<string> (featureSet);
RequiresAnalyzerBase.cs (4)
17using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 335 ValueSet<string> featureCheckAnnotations = propertySymbol.GetFeatureGuardAnnotations (); 369 MultiValue instance, 370 ImmutableArray<MultiValue> arguments
RequiresDynamicCodeAnalyzer.cs (5)
12using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 49 internal override bool IsIntrinsicallyHandled (IMethodSymbol calledMethod, MultiValue instance, ImmutableArray<MultiValue> arguments) { 88 static bool IsKnownInstantiation(MultiValue genericParametersArray) { 107 if (!array.TryGetValueByIndex (i, out MultiValue value)) {
src\tools\illink\src\ILLink.Shared\DataFlow\ValueSet.cs (19)
16 public readonly struct ValueSet<TValue> : IEquatable<ValueSet<TValue>>, IDeepCopyValue<ValueSet<TValue>> 21 public static readonly ValueSet<TValue> Empty; 29 public static readonly ValueSet<TValue> Unknown = new (UnknownSentinel); 160 public static implicit operator ValueSet<TValue> (TValue value) => new (value); 165 public override bool Equals (object? obj) => obj is ValueSet<TValue> other && Equals (other); 167 public bool Equals (ValueSet<TValue> other) 198 public static bool operator == (ValueSet<TValue> left, ValueSet<TValue> right) => left.Equals (right); 199 public static bool operator != (ValueSet<TValue> left, ValueSet<TValue> right) => !(left == right); 204 return typeof (ValueSet<TValue>).GetHashCode (); 227 internal static ValueSet<TValue> Union (ValueSet<TValue> left, ValueSet<TValue> right) 252 internal static ValueSet<TValue> Intersection (ValueSet<TValue> left, ValueSet<TValue> right) 291 public ValueSet<TValue> DeepCopy ()
src\tools\illink\src\ILLink.Shared\DataFlow\ValueSetLattice.cs (6)
12 public readonly struct ValueSetLattice<TValue> : ILattice<ValueSet<TValue>> 15 public ValueSet<TValue> Top => default; 17 public ValueSet<TValue> Meet (ValueSet<TValue> left, ValueSet<TValue> right) => ValueSet<TValue>.Union (left, right);
src\tools\illink\src\ILLink.Shared\TrimAnalysis\ArrayValue.cs (4)
6using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 19 public partial bool TryGetValueByIndex (int index, out MultiValue value); 21 public static MultiValue SanitizeArrayElementValue (MultiValue input)
src\tools\illink\src\ILLink.Shared\TrimAnalysis\HandleCallAction.cs (23)
14using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 31 public bool Invoke (MethodProxy calledMethod, MultiValue instanceValue, IReadOnlyList<MultiValue> argumentValues, IntrinsicId intrinsicId, out MultiValue methodReturnValue) 33 MultiValue? maybeMethodReturnValue; 70 MultiValue instanceValue, 71 IReadOnlyList<MultiValue> argumentValues, 73 out MultiValue? methodReturnValue); 77 MultiValue instanceValue, 78 IReadOnlyList<MultiValue> argumentValues, 80 out MultiValue? methodReturnValue) 82 MultiValue? returnValue = methodReturnValue = null; 530 foreach (var methodValue in ProcessGetMethodByName (systemTypeValue.RepresentedType, stringValue.Contents, bindingFlags)) 661 foreach (var methodValue in ProcessGetMethodByName (systemTypeValue.RepresentedType, stringValue.Contents, bindingFlags)) 918 if ((argumentValue as ArrayValue)?.TryGetValueByIndex (0, out var underlyingMultiValue) == true) { 1287 void AddReturnValue (MultiValue value) 1293 private IEnumerable<MultiValue> ProcessGetMethodByName (TypeProxy type, string methodName, BindingFlags? bindingFlags) 1310 private bool AnalyzeGenericInstantiationTypeArray (in MultiValue arrayParam, ImmutableArray<GenericParameterValue> genericParameters) 1336 if (!array.TryGetValueByIndex (i, out MultiValue value) || value.AsSingleValue () is UnknownValue) { 1347 if (array.TryGetValueByIndex (i, out MultiValue value)) { 1372 in MultiValue genericParametersArray, 1397 private void ProcessCreateInstanceByName (MethodProxy calledMethod, IReadOnlyList<MultiValue> argumentValues) 1442 internal static BindingFlags? GetBindingFlagsFromValue (in MultiValue parameter) => (BindingFlags?) parameter.AsConstInt ();
src\tools\illink\src\ILLink.Shared\TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (2)
9using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 21 public void Invoke (in MultiValue value, ValueWithDynamicallyAccessedMembers targetValue)
src\tools\illink\src\ILLink.Shared\TrimAnalysis\ValueExtensions.cs (7)
7using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 43 internal static int? AsConstInt (this in MultiValue value) 51 internal static SingleValue? AsSingleValue (this in MultiValue node) 60 private static ValueSet<SingleValue>.Enumerable Unknown = new ValueSet<SingleValue>.Enumerable (UnknownValue.Instance); 64 internal static ValueSet<SingleValue>.Enumerable AsEnumerable (this MultiValue multiValue)
TrimAnalysis\ArrayValue.cs (9)
6using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 12 public readonly Dictionary<int, MultiValue> IndexValues; 14 public static MultiValue Create (MultiValue size) 16 MultiValue result = MultiValueLattice.Top; 24 public static MultiValue Create (int size) => Create (new ConstIntValue (size)); 29 IndexValues = new Dictionary<int, MultiValue> (); 32 public partial bool TryGetValueByIndex (int index, out MultiValue value) 61 if (!otherArr.IndexValues.TryGetValue (kvp.Key, out MultiValue value) || !kvp.Value.Equals (value))
TrimAnalysis\FeatureCheckReturnValuePattern.cs (3)
17 public ValueSet<string> FeatureCheckAnnotations { get; init; } 23 ValueSet<string> featureCheckAnnotations, 50 ValueSet<string> returnValueFeatures = ReturnValue.EnabledFeatures;
TrimAnalysis\HandleCallAction.cs (7)
16using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 49 MultiValue instanceValue, 50 IReadOnlyList<MultiValue> argumentValues, 52 out MultiValue? methodReturnValue) 54 MultiValue? maybeMethodReturnValue = methodReturnValue = null; 158 void AddReturnValue (MultiValue value) 160 maybeMethodReturnValue = (maybeMethodReturnValue is null) ? value : multiValueLattice.Meet ((MultiValue) maybeMethodReturnValue, value);
TrimAnalysis\TrimAnalysisAssignmentPattern.cs (5)
14using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 20 public MultiValue Source { get; init; } 21 public MultiValue Target { get; init; } 27 MultiValue source, 28 MultiValue target,
TrimAnalysis\TrimAnalysisMethodCallPattern.cs (10)
12using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 19 public MultiValue Instance { get; init; } 20 public ImmutableArray<MultiValue> Arguments { get; init; } 27 MultiValue instance, 28 ImmutableArray<MultiValue> arguments, 36 Arguments = ImmutableArray<MultiValue>.Empty; 38 var builder = ImmutableArray.CreateBuilder<MultiValue> (); 39 foreach (var argument in arguments) { 59 var argumentsBuilder = ImmutableArray.CreateBuilder<MultiValue> (); 80 TrimAnalysisVisitor.HandleCall(Operation, OwningSymbol, CalledMethod, Instance, Arguments, location, reportDiagnostic, default, out var _);
TrimAnalysis\TrimAnalysisVisitor.cs (49)
18using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 20 ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>, 29 MultiValue, 48 LocalStateAndContextLattice<MultiValue, FeatureContext, ValueSetLattice<SingleValue>, FeatureContextLattice> lattice, 53 InterproceduralState<MultiValue, ValueSetLattice<SingleValue>> interproceduralState, 67 public override void ApplyCondition (FeatureChecksValue featureChecksValue, ref LocalStateAndContext<MultiValue, FeatureContext> currentState) 78 public override MultiValue DefaultVisit (IOperation operation, StateValue argument) 80 var returnValue = base.DefaultVisit (operation, argument); 88 if (TryGetConstantValue (operation, out var constValue)) 97 public override MultiValue VisitArrayCreation (IArrayCreationOperation operation, StateValue state) 99 var value = base.VisitArrayCreation (operation, state); 109 var arrayValue = ArrayValue.Create (Visit (operation.DimensionSizes[0], state)); 110 var elements = operation.Initializer?.ElementValues.Select (val => Visit (val, state)).ToArray () ?? System.Array.Empty<MultiValue> (); 120 public override MultiValue VisitConversion (IConversionOperation operation, StateValue state) 122 var value = base.VisitConversion (operation, state); 133 public override MultiValue VisitParameterReference (IParameterReferenceOperation paramRef, StateValue state) 139 public override MultiValue VisitInstanceReference (IInstanceReferenceOperation instanceRef, StateValue state) 155 public override MultiValue VisitFieldReference (IFieldReferenceOperation fieldRef, StateValue state) 171 if (TryGetConstantValue (fieldRef, out var constValue)) 178 public override MultiValue VisitTypeOf (ITypeOfOperation typeOfOperation, StateValue state) 183 public override MultiValue VisitBinaryOperator (IBinaryOperation operation, StateValue argument) 189 MultiValue leftValue = Visit (operation.LeftOperand, argument); 190 MultiValue rightValue = Visit (operation.RightOperand, argument); 192 MultiValue result = TopValue; 218 public override MultiValue GetFieldTargetValue (IFieldSymbol field, IFieldReferenceOperation fieldReferenceOperation, in FeatureContext featureContext) 229 public override MultiValue GetParameterTargetValue (IParameterSymbol parameter) 232 public override void HandleAssignment (MultiValue source, MultiValue target, IOperation operation, in FeatureContext featureContext) 244 public override MultiValue HandleArrayElementRead (MultiValue arrayValue, MultiValue indexValue, IOperation operation) 253 MultiValue result = TopValue; 255 if (value is ArrayValue arr && arr.TryGetValueByIndex (index, out var elementValue)) 263 public override void HandleArrayElementWrite (MultiValue arrayValue, MultiValue indexValue, MultiValue valueToWrite, IOperation operation, bool merge) 272 var sanitizedValue = ArrayValue.SanitizeArrayElementValue(valueToWrite); 283 public override MultiValue HandleMethodCall ( 285 MultiValue instance, 286 ImmutableArray<MultiValue> arguments, 300 HandleCall (operation, OwningSymbol, calledMethod, instance, arguments, Location.None, null, _multiValueLattice, out MultiValue methodReturnValue); 313 foreach (var argument in arguments) { 329 MultiValue instance, 330 ImmutableArray<MultiValue> arguments, 334 out MultiValue methodReturnValue) 348 public override void HandleReturnValue (MultiValue returnValue, IOperation operation, in FeatureContext featureContext) 376 var featureCheckAnnotations = propertySymbol.GetFeatureGuardAnnotations (); 386 public override MultiValue HandleDelegateCreation (IMethodSymbol method, IOperation operation, in FeatureContext featureContext) 433 static bool TryGetConstantValue (IOperation operation, out MultiValue constValue)
TrimAnalysis\TrimDataFlowAnalysis.cs (4)
17 ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>, 20using MultiValue = ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>; 25 MultiValue, 64 InterproceduralState<MultiValue, ValueSetLattice<SingleValue>> interproceduralState)