2 instantiations of LocalDefinition
Microsoft.CodeAnalysis (2)
CodeGen\LocalSlotManager.cs (1)
234
local = new
LocalDefinition
(
Emit\EditAndContinue\EncVariableSlotAllocator.cs (1)
179
return new
LocalDefinition
(
107 references to LocalDefinition
Microsoft.CodeAnalysis (40)
CodeGen\ILBuilder.cs (2)
1169
internal bool PossiblyDefinedOutsideOfTry(
LocalDefinition
local)
1203
internal void AddLocalToScope(
LocalDefinition
local)
CodeGen\ILBuilderEmit.cs (4)
227
LocalDefinition
? keyHash,
438
internal void EmitLocalLoad(
LocalDefinition
local)
463
internal void EmitLocalStore(
LocalDefinition
local)
487
internal void EmitLocalAddress(
LocalDefinition
local)
CodeGen\LocalOrParameter.cs (3)
12
public readonly
LocalDefinition
? Local;
15
private LocalOrParameter(
LocalDefinition
? local, int parameterIndex)
21
public static implicit operator LocalOrParameter(
LocalDefinition
? local)
CodeGen\LocalScopeManager.cs (7)
105
internal void AddLocal(
LocalDefinition
variable)
174
internal bool PossiblyDefinedOutsideOfTry(
LocalDefinition
local)
305
internal virtual bool ContainsLocal(
LocalDefinition
local) => false;
314
private ImmutableArray<
LocalDefinition
>.Builder _localVariables;
339
internal void AddLocal(
LocalDefinition
variable)
343
_localVariables = ImmutableArray.CreateBuilder<
LocalDefinition
>(1);
374
internal override bool ContainsLocal(
LocalDefinition
local)
CodeGen\LocalSlotManager.cs (20)
64
private Dictionary<ILocalSymbolInternal,
LocalDefinition
>? _localMap;
67
private KeyedStack<LocalSignature,
LocalDefinition
>? _freeSlots;
70
private HashSet<
LocalDefinition
>? _nonReusableLocals;
73
private ArrayBuilder<
LocalDefinition
>? _addressedLocals;
96
private Dictionary<ILocalSymbolInternal,
LocalDefinition
> LocalMap
103
map = new Dictionary<ILocalSymbolInternal,
LocalDefinition
>(ReferenceEqualityComparer.Instance);
111
private KeyedStack<LocalSignature,
LocalDefinition
> FreeSlots
118
slots = new KeyedStack<LocalSignature,
LocalDefinition
>();
126
internal
LocalDefinition
DeclareLocal(
138
LocalDefinition
? local;
152
internal
LocalDefinition
GetLocal(ILocalSymbolInternal symbol)
163
var
slot = GetLocal(symbol);
172
internal
LocalDefinition
AllocateSlot(
178
if (!FreeSlots.TryPop(new LocalSignature(type, constraints), out
LocalDefinition
? local))
195
private
LocalDefinition
DeclareLocalImpl(
211
LocalDefinition
? local;
253
internal void FreeSlot(
LocalDefinition
slot)
266
_addressedLocals ??= ArrayBuilder<
LocalDefinition
>.GetInstance();
271
internal void AddAddressedLocal(
LocalDefinition
localDef, OptimizationLevel optimizations)
287
_nonReusableLocals ??= new HashSet<
LocalDefinition
>(ReferenceEqualityComparer.Instance);
CodeGen\SwitchStringJumpTableEmitter.cs (2)
69
private readonly
LocalDefinition
? _keyHash;
77
LocalDefinition
? keyHash,
CodeGen\VariableSlotAllocator.cs (1)
18
public abstract
LocalDefinition
? GetPreviousLocal(
Emit\EditAndContinue\EncVariableSlotAllocator.cs (1)
143
public override
LocalDefinition
? GetPreviousLocal(
Microsoft.CodeAnalysis.CSharp (67)
CodeGen\CodeGenerator.cs (8)
41
private ArrayBuilder<
LocalDefinition
> _expressionTemps;
74
private
LocalDefinition
_returnTemp;
161
private
LocalDefinition
LazyReturnTemp
165
var
result = _returnTemp;
505
private void AddExpressionTemp(
LocalDefinition
temp)
513
ArrayBuilder<
LocalDefinition
> exprTemps = _expressionTemps;
516
exprTemps = ArrayBuilder<
LocalDefinition
>.GetInstance();
531
var
temp = _expressionTemps[i];
CodeGen\EmitAddress.cs (15)
24
private
LocalDefinition
EmitAddress(BoundExpression expression, AddressKind addressKind)
136
var
temp = this.AllocateTemp(type, expression.Syntax);
184
private
LocalDefinition
EmitPassByCopyAddress(BoundPassByCopy passByCopyExpr, AddressKind addressKind)
248
var
receiverTemp = EmitAddress(expression.ReferenceTypeReceiver, AddressKind.ReadOnly);
263
private
LocalDefinition
EmitLocalAddress(BoundLocal localAccess, AddressKind addressKind)
296
private
LocalDefinition
EmitDupAddress(BoundDup dup, AddressKind addressKind)
328
private
LocalDefinition
EmitAddressOfTempClone(BoundExpression expression)
331
var
value = this.AllocateTemp(expression.Type, expression.Syntax);
341
private
LocalDefinition
EmitSequenceAddress(BoundSequence sequence, AddressKind addressKind)
345
var
result = EmitAddress(sequence.Value, addressKind);
436
private
LocalDefinition
EmitFieldAddress(BoundFieldAccess fieldAccess, AddressKind addressKind)
469
private
LocalDefinition
EmitParameterAddress(BoundParameter parameter, AddressKind addressKind)
502
private
LocalDefinition
EmitReceiverRef(BoundExpression receiver, AddressKind addressKind)
543
private
LocalDefinition
EmitInstanceFieldAddress(BoundFieldAccess fieldAccess, AddressKind addressKind)
552
var
tempOpt = EmitReceiverRef(
CodeGen\EmitExpression.cs (29)
410
LocalDefinition
receiverTemp = null;
432
LocalDefinition
cloneTemp = null;
676
var
temp = EmitAddress(expression.Operand, AddressKind.Writeable);
724
var
temp = EmitAddress(argument, AddressKind.ReadOnly);
732
var
unexpectedTemp = EmitAddress(argument, refKind == RefKindExtensions.StrictIn ? AddressKind.ReadOnlyStrict : AddressKind.Writeable);
749
var
temp = EmitAddress(expression.Operand, AddressKind.ReadOnlyStrict);
914
var
seqLocal = DefineLocal(local, sequence.Syntax);
1179
var
temp = EmitFieldLoadReceiver(receiver);
1197
private
LocalDefinition
EmitFieldLoadReceiver(BoundExpression receiver)
1402
LocalDefinition
definition = GetLocal(local);
1648
LocalDefinition
tempOpt = EmitReceiverRef(receiver, AddressKind.Writeable);
1697
LocalDefinition
tempOpt;
1930
void emitReceiver(BoundCall call, CallKind callKind, AddressKind? addressKind, bool box, out
LocalDefinition
tempOpt)
2036
void emitGenericReceiverCloneIfNecessary(BoundCall call, CallKind callKind, ref
LocalDefinition
tempOpt)
2579
LocalDefinition
temp = EmitAssignmentDuplication(assignmentOperator, useKind, lhsUsesStack);
2695
var
temp = EmitAddress(target, AddressKind.Writeable);
2724
var
temp = EmitAddress(target, AddressKind.Writeable);
2818
var
temp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable);
2864
LocalDefinition
localDefinition = GetLocal(left);
2902
var
temp = EmitAddress(left, AddressKind.Writeable);
2913
var
temp = EmitAddress(left, AddressKind.Writeable);
2925
var
temp = EmitAddress(left, AddressKind.Writeable);
3022
LocalDefinition
temp = EmitAddress(assignmentOperator.Right, lhs.GetRefKind() is RefKind.RefReadOnly or RefKindExtensions.StrictIn or RefKind.RefReadOnlyParameter ? AddressKind.ReadOnlyStrict : AddressKind.Writeable);
3050
private
LocalDefinition
EmitAssignmentDuplication(BoundAssignmentOperator assignmentOperator, UseKind useKind, bool lhsUsesStack)
3052
LocalDefinition
temp = null;
3194
private void EmitAssignmentPostfix(BoundAssignmentOperator assignment,
LocalDefinition
temp, UseKind useKind)
3526
var
temp = this.AllocateTemp(type, syntaxNode);
4027
var
temp = AllocateTemp(to, syntax);
4044
LocalDefinition
temp = null;
CodeGen\EmitStackAllocInitializer.cs (1)
89
var
temp = AllocateTemp(readOnlySpan, syntaxNode);
CodeGen\EmitStatement.cs (14)
873
var
unexpectedTemp = this.EmitAddress(expressionOpt, this._method.RefKind == RefKind.RefReadOnly ? AddressKind.ReadOnlyStrict : AddressKind.Writeable);
1169
var
temp = AllocateTemp(exceptionSource.Type, exceptionSource.Syntax);
1172
var
receiverTemp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable);
1260
LocalDefinition
temp = null;
1394
var
stringLength = AllocateTemp(int32Type, syntaxNode);
1422
var
charTemp = AllocateTemp(charType, syntaxNode);
1496
LocalDefinition
keyHash = null;
1752
private
LocalDefinition
GetLocal(BoundLocal localExpression)
1758
private
LocalDefinition
GetLocal(LocalSymbol symbol)
1763
private
LocalDefinition
DefineLocal(LocalSymbol local, SyntaxNode syntaxNode)
1823
var
localDef = _builder.LocalSlotManager.DeclareLocal(
1907
private
LocalDefinition
AllocateTemp(TypeSymbol type, SyntaxNode syntaxNode, LocalSlotConstraints slotConstraints = LocalSlotConstraints.None)
1917
private void FreeTemp(
LocalDefinition
temp)
1925
private void FreeOptTemp(
LocalDefinition
temp)