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; 74private LocalDefinition _returnTemp; 161private LocalDefinition LazyReturnTemp 165var result = _returnTemp; 521private void AddExpressionTemp(LocalDefinition temp) 529ArrayBuilder<LocalDefinition> exprTemps = _expressionTemps; 532exprTemps = ArrayBuilder<LocalDefinition>.GetInstance(); 547var 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)
873var unexpectedTemp = this.EmitAddress(expressionOpt, this._method.RefKind == RefKind.RefReadOnly ? AddressKind.ReadOnlyStrict : AddressKind.Writeable); 1169var temp = AllocateTemp(exceptionSource.Type, exceptionSource.Syntax); 1172var receiverTemp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable); 1260LocalDefinition temp = null; 1394var stringLength = AllocateTemp(int32Type, syntaxNode); 1422var charTemp = AllocateTemp(charType, syntaxNode); 1496LocalDefinition keyHash = null; 1752private LocalDefinition GetLocal(BoundLocal localExpression) 1758private LocalDefinition GetLocal(LocalSymbol symbol) 1763private LocalDefinition DefineLocal(LocalSymbol local, SyntaxNode syntaxNode) 1823var localDef = _builder.LocalSlotManager.DeclareLocal( 1907private LocalDefinition AllocateTemp(TypeSymbol type, SyntaxNode syntaxNode, LocalSlotConstraints slotConstraints = LocalSlotConstraints.None) 1917private void FreeTemp(LocalDefinition temp) 1925private void FreeOptTemp(LocalDefinition temp)