2 instantiations of LocalDefinition
Microsoft.CodeAnalysis (2)
CodeGen\LocalSlotManager.cs (1)
234
local = new
LocalDefinition
(
Emit\EditAndContinue\EncVariableSlotAllocator.cs (1)
179
return new
LocalDefinition
(
106 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 (66)
CodeGen\CodeGenerator.cs (8)
41
private ArrayBuilder<
LocalDefinition
> _expressionTemps;
74
private
LocalDefinition
_returnTemp;
161
private
LocalDefinition
LazyReturnTemp
165
var
result = _returnTemp;
521
private void AddExpressionTemp(
LocalDefinition
temp)
529
ArrayBuilder<
LocalDefinition
> exprTemps = _expressionTemps;
532
exprTemps = ArrayBuilder<
LocalDefinition
>.GetInstance();
547
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 (28)
410
LocalDefinition
receiverTemp = null;
432
LocalDefinition
cloneTemp = null;
676
var
temp = EmitAddress(expression.Operand, AddressKind.Writeable);
725
var
temp = EmitAddress(argument, GetArgumentAddressKind(refKind));
760
var
temp = EmitAddress(expression.Operand, AddressKind.ReadOnlyStrict);
925
var
seqLocal = DefineLocal(local, sequence.Syntax);
1190
var
temp = EmitFieldLoadReceiver(receiver);
1208
private
LocalDefinition
EmitFieldLoadReceiver(BoundExpression receiver)
1413
LocalDefinition
definition = GetLocal(local);
1659
LocalDefinition
tempOpt = EmitReceiverRef(receiver, AddressKind.Writeable);
1708
LocalDefinition
tempOpt;
1941
void emitReceiver(BoundCall call, CallKind callKind, AddressKind? addressKind, bool box, out
LocalDefinition
tempOpt)
2047
void emitGenericReceiverCloneIfNecessary(BoundCall call, CallKind callKind, ref
LocalDefinition
tempOpt)
2590
LocalDefinition
temp = EmitAssignmentDuplication(assignmentOperator, useKind, lhsUsesStack);
2706
var
temp = EmitAddress(target, AddressKind.Writeable);
2735
var
temp = EmitAddress(target, AddressKind.Writeable);
2829
var
temp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable);
2875
LocalDefinition
localDefinition = GetLocal(left);
2913
var
temp = EmitAddress(left, AddressKind.Writeable);
2924
var
temp = EmitAddress(left, AddressKind.Writeable);
2936
var
temp = EmitAddress(left, AddressKind.Writeable);
3033
LocalDefinition
temp = EmitAddress(assignmentOperator.Right, lhs.GetRefKind() is RefKind.RefReadOnly or RefKindExtensions.StrictIn or RefKind.RefReadOnlyParameter ? AddressKind.ReadOnlyStrict : AddressKind.Writeable);
3061
private
LocalDefinition
EmitAssignmentDuplication(BoundAssignmentOperator assignmentOperator, UseKind useKind, bool lhsUsesStack)
3063
LocalDefinition
temp = null;
3205
private void EmitAssignmentPostfix(BoundAssignmentOperator assignment,
LocalDefinition
temp, UseKind useKind)
3537
var
temp = this.AllocateTemp(type, syntaxNode);
4038
var
temp = AllocateTemp(to, syntax);
4055
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)