27 instantiations of StackSlot
ILCompiler.Compiler (27)
Compiler\Dataflow\MethodBodyScanner.cs (27)
71stack.Push(new StackSlot()); // Push dummy values to avoid crashes. 78stack.Push(new StackSlot()); 106return new StackSlot(MultiValueLattice.Meet(a.Value, b.Value)); 117a.Push(new StackSlot()); 120b.Push(new StackSlot()); 417currentStack.Push(new StackSlot(NullValue.Instance)); 433StackSlot slot = new StackSlot(civ); 441StackSlot slot = new StackSlot(civ); 450StackSlot slot = new StackSlot(civ); 459StackSlot slot = new StackSlot(civ); 524StackSlot slot = new StackSlot(new KnownStringValue((string)methodIL.GetObject(reader.ReadILToken()))); 631currentStack.Push(new StackSlot(ArrayValue.Create(count.Value, arrayElementType))); 866catchStack.Push(new StackSlot()); 894StackSlot slot = new StackSlot( 931newSlot = new StackSlot(new LocalVariableReferenceValue(index, methodIL.GetLocals()[index].Type)); 934newSlot = new StackSlot(localValue.Value.Value); 936newSlot = new StackSlot(UnknownValue.Instance); 946StackSlot slot = new StackSlot(new RuntimeTypeHandleForGenericParameterValue((GenericParameterDesc)type)); 959currentStack.Push(new StackSlot(nullableDam)); 963currentStack.Push(new StackSlot(nullableType)); 973currentStack.Push(new StackSlot(typeHandle)); 981StackSlot slot = new StackSlot(new RuntimeMethodHandleValue(method)); 1117currentStack.Push(new StackSlot(value)); 1290currentStack.Push(new StackSlot(UnknownValue.Instance)); 1305currentStack.Push(new StackSlot(methodReturnValue)); 1397currentStack.Push(new StackSlot(arrayOfAnnotated.GetAnyElementValue())); 1425currentStack.Push(new StackSlot(arrayIndexValue.Value));
66 references to StackSlot
ILCompiler.Compiler (66)
Compiler\Dataflow\MethodBodyScanner.cs (66)
65private void CheckForInvalidStack(Stack<StackSlot> stack, int depthRequired, MethodIL method, int ilOffset) 76private static void PushUnknown(Stack<StackSlot> stack) 81private void PushUnknownAndWarnAboutInvalidIL(Stack<StackSlot> stack, MethodIL methodIL, int offset) 87private StackSlot PopUnknown(Stack<StackSlot> stack, int count, MethodIL method, int ilOffset) 92StackSlot topOfStack = default; 97StackSlot slot = stack.Pop(); 104private static StackSlot MergeStackElement(StackSlot a, StackSlot b) 110private static Stack<StackSlot> MergeStack(Stack<StackSlot> a, Stack<StackSlot> b) 123Stack<StackSlot> newStack = new Stack<StackSlot>(a.Count); 124Stack<StackSlot>.Enumerator aEnum = a.GetEnumerator(); 125Stack<StackSlot>.Enumerator bEnum = b.GetEnumerator(); 132return new Stack<StackSlot>(newStack); 135private static void ClearStack(ref Stack<StackSlot>? stack) 140private static void NewKnownStack(Dictionary<int, Stack<StackSlot>> knownStacks, int newOffset, Stack<StackSlot> newStack) 154knownStacks.Add(newOffset, new Stack<StackSlot>(newStack.Reverse())); 350Dictionary<int, Stack<StackSlot>> knownStacks = new Dictionary<int, Stack<StackSlot>>(); 351Stack<StackSlot>? currentStack = new Stack<StackSlot>(methodIL.MaxStack); 368currentStack = new Stack<StackSlot>(knownStack.Reverse()); 376currentStack ??= new Stack<StackSlot>(methodIL.MaxStack); 433StackSlot slot = new StackSlot(civ); 441StackSlot slot = new StackSlot(civ); 450StackSlot slot = new StackSlot(civ); 459StackSlot slot = new StackSlot(civ); 524StackSlot slot = new StackSlot(new KnownStringValue((string)methodIL.GetObject(reader.ReadILToken()))); 628StackSlot count = PopUnknown(currentStack, 1, methodIL, offset); 784NewKnownStack(knownStacks, reader.ReadBranchDestination(opcode), new Stack<StackSlot>(methodIL.MaxStack)); 806StackSlot retStackSlot = PopUnknown(currentStack, 1, methodIL, offset); 861private static void ScanExceptionInformation(Dictionary<int, Stack<StackSlot>> knownStacks, MethodIL methodIL) 865Stack<StackSlot> catchStack = new Stack<StackSlot>(1); 884private void ScanLdarg(ILOpcode opcode, int parameterIndex, Stack<StackSlot> currentStack, MethodDesc thisMethod) 894StackSlot slot = new StackSlot( 905Stack<StackSlot> currentStack 908var valueToStore = PopUnknown(currentStack, 1, methodIL, offset); 922Stack<StackSlot> currentStack, 928StackSlot newSlot; 940private void ScanLdtoken(MethodIL methodIL, int offset, object operand, Stack<StackSlot> currentStack) 946StackSlot slot = new StackSlot(new RuntimeTypeHandleForGenericParameterValue((GenericParameterDesc)type)); 981StackSlot slot = new StackSlot(new RuntimeMethodHandleValue(method)); 1000Stack<StackSlot> currentStack, 1004StackSlot valueToStore = PopUnknown(currentStack, 1, methodIL, offset); 1011Stack<StackSlot> currentStack, 1016StackSlot valueToStore = PopUnknown(currentStack, 1, methodIL, offset); 1017StackSlot destination = PopUnknown(currentStack, 1, methodIL, offset); 1096Stack<StackSlot> currentStack, 1137Stack<StackSlot> currentStack, 1141StackSlot valueToStoreSlot = PopUnknown(currentStack, 1, methodIL, offset); 1166Stack<StackSlot> currentStack, 1179StackSlot slot = PopUnknown(currentStack, 1, containingMethodIL, ilOffset); 1277Stack<StackSlot> currentStack, 1348Stack<StackSlot> currentStack, 1352StackSlot valueToStore = PopUnknown(currentStack, 1, methodIL, offset); 1353StackSlot indexToStoreAt = PopUnknown(currentStack, 1, methodIL, offset); 1354StackSlot arrayToStoreIn = PopUnknown(currentStack, 1, methodIL, offset); 1380Stack<StackSlot> currentStack, 1384StackSlot indexToLoadFrom = PopUnknown(currentStack, 1, methodIL, offset); 1385StackSlot arrayToLoadFrom = PopUnknown(currentStack, 1, methodIL, offset);