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;
77
private
LocalDefinition
_returnTemp;
164
private
LocalDefinition
LazyReturnTemp
168
var
result = _returnTemp;
526
private void AddExpressionTemp(
LocalDefinition
temp)
534
ArrayBuilder<
LocalDefinition
> exprTemps = _expressionTemps;
537
exprTemps = ArrayBuilder<
LocalDefinition
>.GetInstance();
552
var
temp = _expressionTemps[i];
CodeGen\EmitAddress.cs (15)
24
private
LocalDefinition
EmitAddress(BoundExpression expression, AddressKind addressKind, bool used)
145
var
temp = this.AllocateTemp(type, expression.Syntax);
202
private
LocalDefinition
EmitPassByCopyAddress(BoundPassByCopy passByCopyExpr, AddressKind addressKind, bool used)
271
var
receiverTemp = EmitAddress(expression.ReferenceTypeReceiver, addressKind, used: true);
288
private
LocalDefinition
EmitLocalAddress(BoundLocal localAccess, AddressKind addressKind, bool used)
322
private
LocalDefinition
EmitDupAddress(BoundDup dup, AddressKind addressKind, bool used)
364
private
LocalDefinition
EmitAddressOfTempClone(BoundExpression expression, bool used)
371
var
value = this.AllocateTemp(expression.Type, expression.Syntax);
384
private
LocalDefinition
EmitSequenceAddress(BoundSequence sequence, AddressKind addressKind, bool used)
388
var
result = EmitAddress(sequence.Value, addressKind, used);
491
private
LocalDefinition
EmitFieldAddress(BoundFieldAccess fieldAccess, AddressKind addressKind, bool used)
525
private
LocalDefinition
EmitParameterAddress(BoundParameter parameter, AddressKind addressKind, bool used)
561
private
LocalDefinition
EmitReceiverRef(BoundExpression receiver, AddressKind addressKind, bool used)
602
private
LocalDefinition
EmitInstanceFieldAddress(BoundFieldAccess fieldAccess, AddressKind addressKind, bool used)
625
var
tempOpt = EmitReceiverRef(
CodeGen\EmitExpression.cs (28)
421
LocalDefinition
receiverTemp = null;
443
LocalDefinition
cloneTemp = null;
687
var
temp = EmitAddress(expression.Operand, AddressKind.Writeable, used: true);
736
var
temp = EmitAddress(argument, getArgumentAddressKind(refKind), used: true);
771
var
temp = EmitAddress(expression.Operand, AddressKind.ReadOnlyStrict, used);
940
var
seqLocal = DefineLocal(local, sequence.Syntax);
1248
var
temp = EmitFieldLoadReceiver(receiver);
1265
private
LocalDefinition
EmitFieldLoadReceiver(BoundExpression receiver)
1470
LocalDefinition
definition = GetLocal(local);
1730
LocalDefinition
tempOpt = EmitReceiverRef(receiver, AddressKind.Writeable, used: true);
1779
LocalDefinition
tempOpt;
2016
void emitReceiver(BoundCall call, CallKind callKind, AddressKind? addressKind, bool box, out
LocalDefinition
tempOpt)
2128
void emitGenericReceiverCloneIfNecessary(BoundCall call, CallKind callKind, ref
LocalDefinition
tempOpt)
2687
LocalDefinition
temp = EmitAssignmentDuplication(assignmentOperator, useKind, lhsUsesStack);
2803
var
temp = EmitAddress(target, AddressKind.Writeable, used: true);
2832
var
temp = EmitAddress(target, AddressKind.Writeable, used: true);
2926
var
temp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable, used: true);
2972
LocalDefinition
localDefinition = GetLocal(left);
3010
var
temp = EmitAddress(left, AddressKind.Writeable, used: true);
3026
var
temp = EmitAddress(left, AddressKind.Writeable, used: true);
3038
var
temp = EmitAddress(left, AddressKind.Writeable, used: true);
3160
LocalDefinition
temp = EmitAddress(right, RefAssignmentValueAddressKind(refKind), used);
3173
private
LocalDefinition
EmitAssignmentDuplication(BoundAssignmentOperator assignmentOperator, UseKind useKind, bool lhsUsesStack)
3175
LocalDefinition
temp = null;
3323
private void EmitAssignmentPostfix(BoundAssignmentOperator assignment,
LocalDefinition
temp, UseKind useKind)
3655
var
temp = this.AllocateTemp(type, syntaxNode);
4156
var
temp = AllocateTemp(to, syntax);
4173
LocalDefinition
temp = null;
CodeGen\EmitStackAllocInitializer.cs (1)
89
var
temp = AllocateTemp(readOnlySpan, syntaxNode);
CodeGen\EmitStatement.cs (14)
883
var
unexpectedTemp = this.EmitAddress(expressionOpt, this._method.RefKind == RefKind.RefReadOnly ? AddressKind.ReadOnlyStrict : AddressKind.Writeable, used: true);
1192
var
temp = AllocateTemp(exceptionSource.Type, exceptionSource.Syntax);
1195
var
receiverTemp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable, used: true);
1287
LocalDefinition
temp = null;
1421
var
stringLength = AllocateTemp(int32Type, syntaxNode);
1449
var
charTemp = AllocateTemp(charType, syntaxNode);
1523
LocalDefinition
keyHash = null;
1779
private
LocalDefinition
GetLocal(BoundLocal localExpression)
1785
private
LocalDefinition
GetLocal(LocalSymbol symbol)
1790
private
LocalDefinition
DefineLocal(LocalSymbol local, SyntaxNode syntaxNode)
1850
var
localDef = _builder.LocalSlotManager.DeclareLocal(
1934
private
LocalDefinition
AllocateTemp(TypeSymbol type, SyntaxNode syntaxNode, LocalSlotConstraints slotConstraints = LocalSlotConstraints.None)
1944
private void FreeTemp(
LocalDefinition
temp)
1952
private void FreeOptTemp(
LocalDefinition
temp)