2 instantiations of LocalDefinition
Microsoft.CodeAnalysis (2)
CodeGen\LocalSlotManager.cs (1)
234local = new LocalDefinition(
Emit\EditAndContinue\EncVariableSlotAllocator.cs (1)
179return new LocalDefinition(
107 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 (67)
CodeGen\CodeGenerator.cs (8)
41private ArrayBuilder<LocalDefinition> _expressionTemps; 74private LocalDefinition _returnTemp; 161private LocalDefinition LazyReturnTemp 165var result = _returnTemp; 505private void AddExpressionTemp(LocalDefinition temp) 513ArrayBuilder<LocalDefinition> exprTemps = _expressionTemps; 516exprTemps = ArrayBuilder<LocalDefinition>.GetInstance(); 531var 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 (29)
410LocalDefinition receiverTemp = null; 432LocalDefinition cloneTemp = null; 676var temp = EmitAddress(expression.Operand, AddressKind.Writeable); 724var temp = EmitAddress(argument, AddressKind.ReadOnly); 732var unexpectedTemp = EmitAddress(argument, refKind == RefKindExtensions.StrictIn ? AddressKind.ReadOnlyStrict : AddressKind.Writeable); 749var temp = EmitAddress(expression.Operand, AddressKind.ReadOnlyStrict); 914var seqLocal = DefineLocal(local, sequence.Syntax); 1179var temp = EmitFieldLoadReceiver(receiver); 1197private LocalDefinition EmitFieldLoadReceiver(BoundExpression receiver) 1402LocalDefinition definition = GetLocal(local); 1648LocalDefinition tempOpt = EmitReceiverRef(receiver, AddressKind.Writeable); 1697LocalDefinition tempOpt; 1930void emitReceiver(BoundCall call, CallKind callKind, AddressKind? addressKind, bool box, out LocalDefinition tempOpt) 2036void emitGenericReceiverCloneIfNecessary(BoundCall call, CallKind callKind, ref LocalDefinition tempOpt) 2579LocalDefinition temp = EmitAssignmentDuplication(assignmentOperator, useKind, lhsUsesStack); 2695var temp = EmitAddress(target, AddressKind.Writeable); 2724var temp = EmitAddress(target, AddressKind.Writeable); 2818var temp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable); 2864LocalDefinition localDefinition = GetLocal(left); 2902var temp = EmitAddress(left, AddressKind.Writeable); 2913var temp = EmitAddress(left, AddressKind.Writeable); 2925var temp = EmitAddress(left, AddressKind.Writeable); 3022LocalDefinition temp = EmitAddress(assignmentOperator.Right, lhs.GetRefKind() is RefKind.RefReadOnly or RefKindExtensions.StrictIn or RefKind.RefReadOnlyParameter ? AddressKind.ReadOnlyStrict : AddressKind.Writeable); 3050private LocalDefinition EmitAssignmentDuplication(BoundAssignmentOperator assignmentOperator, UseKind useKind, bool lhsUsesStack) 3052LocalDefinition temp = null; 3194private void EmitAssignmentPostfix(BoundAssignmentOperator assignment, LocalDefinition temp, UseKind useKind) 3526var temp = this.AllocateTemp(type, syntaxNode); 4027var temp = AllocateTemp(to, syntax); 4044LocalDefinition 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)