2 instantiations of LocalDefinition
Microsoft.CodeAnalysis (2)
CodeGen\LocalSlotManager.cs (1)
234local = new LocalDefinition(
Emit\EditAndContinue\EncVariableSlotAllocator.cs (1)
179return new LocalDefinition(
106 references to LocalDefinition
Microsoft.CodeAnalysis (40)
CodeGen\ILBuilder.cs (2)
1169internal bool PossiblyDefinedOutsideOfTry(LocalDefinition local) 1203internal void AddLocalToScope(LocalDefinition local)
CodeGen\ILBuilderEmit.cs (4)
227LocalDefinition? keyHash, 438internal void EmitLocalLoad(LocalDefinition local) 463internal void EmitLocalStore(LocalDefinition local) 487internal void EmitLocalAddress(LocalDefinition local)
CodeGen\LocalOrParameter.cs (3)
12public readonly LocalDefinition? Local; 15private LocalOrParameter(LocalDefinition? local, int parameterIndex) 21public static implicit operator LocalOrParameter(LocalDefinition? local)
CodeGen\LocalScopeManager.cs (7)
105internal void AddLocal(LocalDefinition variable) 174internal bool PossiblyDefinedOutsideOfTry(LocalDefinition local) 305internal virtual bool ContainsLocal(LocalDefinition local) => false; 314private ImmutableArray<LocalDefinition>.Builder _localVariables; 339internal void AddLocal(LocalDefinition variable) 343_localVariables = ImmutableArray.CreateBuilder<LocalDefinition>(1); 374internal override bool ContainsLocal(LocalDefinition local)
CodeGen\LocalSlotManager.cs (20)
64private Dictionary<ILocalSymbolInternal, LocalDefinition>? _localMap; 67private KeyedStack<LocalSignature, LocalDefinition>? _freeSlots; 70private HashSet<LocalDefinition>? _nonReusableLocals; 73private ArrayBuilder<LocalDefinition>? _addressedLocals; 96private Dictionary<ILocalSymbolInternal, LocalDefinition> LocalMap 103map = new Dictionary<ILocalSymbolInternal, LocalDefinition>(ReferenceEqualityComparer.Instance); 111private KeyedStack<LocalSignature, LocalDefinition> FreeSlots 118slots = new KeyedStack<LocalSignature, LocalDefinition>(); 126internal LocalDefinition DeclareLocal( 138LocalDefinition? local; 152internal LocalDefinition GetLocal(ILocalSymbolInternal symbol) 163var slot = GetLocal(symbol); 172internal LocalDefinition AllocateSlot( 178if (!FreeSlots.TryPop(new LocalSignature(type, constraints), out LocalDefinition? local)) 195private LocalDefinition DeclareLocalImpl( 211LocalDefinition? local; 253internal void FreeSlot(LocalDefinition slot) 266_addressedLocals ??= ArrayBuilder<LocalDefinition>.GetInstance(); 271internal void AddAddressedLocal(LocalDefinition localDef, OptimizationLevel optimizations) 287_nonReusableLocals ??= new HashSet<LocalDefinition>(ReferenceEqualityComparer.Instance);
CodeGen\SwitchStringJumpTableEmitter.cs (2)
69private readonly LocalDefinition? _keyHash; 77LocalDefinition? keyHash,
CodeGen\VariableSlotAllocator.cs (1)
18public abstract LocalDefinition? GetPreviousLocal(
Emit\EditAndContinue\EncVariableSlotAllocator.cs (1)
143public override LocalDefinition? GetPreviousLocal(
Microsoft.CodeAnalysis.CSharp (66)
CodeGen\CodeGenerator.cs (8)
41private ArrayBuilder<LocalDefinition> _expressionTemps; 77private LocalDefinition _returnTemp; 164private LocalDefinition LazyReturnTemp 168var result = _returnTemp; 524private void AddExpressionTemp(LocalDefinition temp) 532ArrayBuilder<LocalDefinition> exprTemps = _expressionTemps; 535exprTemps = ArrayBuilder<LocalDefinition>.GetInstance(); 550var temp = _expressionTemps[i];
CodeGen\EmitAddress.cs (15)
24private LocalDefinition EmitAddress(BoundExpression expression, AddressKind addressKind) 136var temp = this.AllocateTemp(type, expression.Syntax); 184private LocalDefinition EmitPassByCopyAddress(BoundPassByCopy passByCopyExpr, AddressKind addressKind) 248var receiverTemp = EmitAddress(expression.ReferenceTypeReceiver, AddressKind.ReadOnly); 263private LocalDefinition EmitLocalAddress(BoundLocal localAccess, AddressKind addressKind) 296private LocalDefinition EmitDupAddress(BoundDup dup, AddressKind addressKind) 328private LocalDefinition EmitAddressOfTempClone(BoundExpression expression) 331var value = this.AllocateTemp(expression.Type, expression.Syntax); 341private LocalDefinition EmitSequenceAddress(BoundSequence sequence, AddressKind addressKind) 345var result = EmitAddress(sequence.Value, addressKind); 436private LocalDefinition EmitFieldAddress(BoundFieldAccess fieldAccess, AddressKind addressKind) 469private LocalDefinition EmitParameterAddress(BoundParameter parameter, AddressKind addressKind) 502private LocalDefinition EmitReceiverRef(BoundExpression receiver, AddressKind addressKind) 543private LocalDefinition EmitInstanceFieldAddress(BoundFieldAccess fieldAccess, AddressKind addressKind) 552var tempOpt = EmitReceiverRef(
CodeGen\EmitExpression.cs (28)
410LocalDefinition receiverTemp = null; 432LocalDefinition cloneTemp = null; 676var temp = EmitAddress(expression.Operand, AddressKind.Writeable); 725var temp = EmitAddress(argument, GetArgumentAddressKind(refKind)); 760var temp = EmitAddress(expression.Operand, AddressKind.ReadOnlyStrict); 925var seqLocal = DefineLocal(local, sequence.Syntax); 1190var temp = EmitFieldLoadReceiver(receiver); 1208private LocalDefinition EmitFieldLoadReceiver(BoundExpression receiver) 1413LocalDefinition definition = GetLocal(local); 1659LocalDefinition tempOpt = EmitReceiverRef(receiver, AddressKind.Writeable); 1708LocalDefinition tempOpt; 1941void emitReceiver(BoundCall call, CallKind callKind, AddressKind? addressKind, bool box, out LocalDefinition tempOpt) 2047void emitGenericReceiverCloneIfNecessary(BoundCall call, CallKind callKind, ref LocalDefinition tempOpt) 2590LocalDefinition temp = EmitAssignmentDuplication(assignmentOperator, useKind, lhsUsesStack); 2706var temp = EmitAddress(target, AddressKind.Writeable); 2735var temp = EmitAddress(target, AddressKind.Writeable); 2829var temp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable); 2875LocalDefinition localDefinition = GetLocal(left); 2913var temp = EmitAddress(left, AddressKind.Writeable); 2924var temp = EmitAddress(left, AddressKind.Writeable); 2936var temp = EmitAddress(left, AddressKind.Writeable); 3033LocalDefinition temp = EmitAddress(assignmentOperator.Right, lhs.GetRefKind() is RefKind.RefReadOnly or RefKindExtensions.StrictIn or RefKind.RefReadOnlyParameter ? AddressKind.ReadOnlyStrict : AddressKind.Writeable); 3061private LocalDefinition EmitAssignmentDuplication(BoundAssignmentOperator assignmentOperator, UseKind useKind, bool lhsUsesStack) 3063LocalDefinition temp = null; 3205private void EmitAssignmentPostfix(BoundAssignmentOperator assignment, LocalDefinition temp, UseKind useKind) 3537var temp = this.AllocateTemp(type, syntaxNode); 4038var temp = AllocateTemp(to, syntax); 4055LocalDefinition temp = null;
CodeGen\EmitStackAllocInitializer.cs (1)
89var temp = AllocateTemp(readOnlySpan, syntaxNode);
CodeGen\EmitStatement.cs (14)
883var unexpectedTemp = this.EmitAddress(expressionOpt, this._method.RefKind == RefKind.RefReadOnly ? AddressKind.ReadOnlyStrict : AddressKind.Writeable); 1192var temp = AllocateTemp(exceptionSource.Type, exceptionSource.Syntax); 1195var receiverTemp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable); 1287LocalDefinition temp = null; 1421var stringLength = AllocateTemp(int32Type, syntaxNode); 1449var charTemp = AllocateTemp(charType, syntaxNode); 1523LocalDefinition keyHash = null; 1779private LocalDefinition GetLocal(BoundLocal localExpression) 1785private LocalDefinition GetLocal(LocalSymbol symbol) 1790private LocalDefinition DefineLocal(LocalSymbol local, SyntaxNode syntaxNode) 1850var localDef = _builder.LocalSlotManager.DeclareLocal( 1934private LocalDefinition AllocateTemp(TypeSymbol type, SyntaxNode syntaxNode, LocalSlotConstraints slotConstraints = LocalSlotConstraints.None) 1944private void FreeTemp(LocalDefinition temp) 1952private void FreeOptTemp(LocalDefinition temp)