92 references to AddressKind
Microsoft.CodeAnalysis.CSharp (92)
CodeGen\CodeGenerator_HasHome.cs (12)
37
/// Note, that despite the name, this kind, when passed to <see cref="HasHome(BoundExpression,
AddressKind
)"/> or
38
/// <see cref="HasHome(BoundExpression,
AddressKind
, Symbol, bool, HashSet{LocalSymbol})"/>, actually makes
39
/// the check relaxed by comparison to <see cref="
AddressKind
.ReadOnly"/>. Therefore, its usage
51
internal static bool IsAnyReadOnly(
AddressKind
addressKind) => addressKind >=
AddressKind
.ReadOnly;
62
AddressKind
addressKind,
72
if (addressKind ==
AddressKind
.ReadOnly && !expression.Type.IsValueType && peVerifyCompatEnabled)
228
static bool callHasHome(
AddressKind
addressKind, RefKind methodRefKind)
244
AddressKind
addressKind,
265
if (addressKind ==
AddressKind
.ReadOnlyStrict)
271
if (addressKind ==
AddressKind
.ReadOnly && !peVerifyCompatEnabled)
308
|| !HasHome(receiver,
AddressKind
.ReadOnly, containingSymbol, peVerifyCompatEnabled, stackLocalsOpt);
CodeGen\EmitAddress.cs (23)
24
private LocalDefinition EmitAddress(BoundExpression expression,
AddressKind
addressKind, bool used)
195
private static bool UseCallResultAsAddress(BoundCall call,
AddressKind
addressKind)
202
private LocalDefinition EmitPassByCopyAddress(BoundPassByCopy passByCopyExpr,
AddressKind
addressKind, bool used)
231
private void EmitConditionalOperatorAddress(BoundConditionalOperator expr,
AddressKind
addressKind, bool used)
255
private void EmitComplexConditionalReceiverAddress(BoundComplexConditionalReceiver expression,
AddressKind
addressKind, bool used)
287
private LocalDefinition EmitLocalAddress(BoundLocal localAccess,
AddressKind
addressKind, bool used)
321
private LocalDefinition EmitDupAddress(BoundDup dup,
AddressKind
addressKind, bool used)
382
private LocalDefinition EmitSequenceAddress(BoundSequence sequence,
AddressKind
addressKind, bool used)
435
private void EmitArrayElementAddress(BoundArrayAccess arrayAccess,
AddressKind
addressKind, bool used)
469
private bool ShouldEmitReadOnlyPrefix(BoundArrayAccess arrayAccess,
AddressKind
addressKind)
471
if (addressKind ==
AddressKind
.Constrained)
489
private LocalDefinition EmitFieldAddress(BoundFieldAccess fieldAccess,
AddressKind
addressKind, bool used)
520
private bool HasHome(BoundExpression expression,
AddressKind
addressKind)
523
private LocalDefinition EmitParameterAddress(BoundParameter parameter,
AddressKind
addressKind, bool used)
559
private LocalDefinition EmitReceiverRef(BoundExpression receiver,
AddressKind
addressKind, bool used)
591
private static bool BoxNonVerifierReferenceReceiver(TypeSymbol receiverType,
AddressKind
addressKind)
594
return receiverType.TypeKind == TypeKind.TypeParameter && addressKind !=
AddressKind
.Constrained;
600
private LocalDefinition EmitInstanceFieldAddress(BoundFieldAccess fieldAccess,
AddressKind
addressKind, bool used)
609
AddressKind
receiverAddressKind = field.RefKind == RefKind.None ?
610
(addressKind ==
AddressKind
.Constrained ?
AddressKind
.Writeable : addressKind) :
611
(addressKind !=
AddressKind
.ReadOnlyStrict ?
AddressKind
.ReadOnly : addressKind);
CodeGen\EmitArrayInitializer.cs (3)
551
EmitAddress(inPlaceTarget,
AddressKind
.Writeable, used: true);
703
EmitAddress(inPlaceTarget,
AddressKind
.Writeable, used: true);
759
EmitAddress(inPlaceTarget,
AddressKind
.Writeable, used: true);
CodeGen\EmitExpression.cs (36)
428
receiverTemp = EmitReceiverRef(receiver,
AddressKind
.ReadOnly, used: true);
461
receiverTemp = EmitReceiverRef(receiver,
AddressKind
.Constrained, used: true);
507
var
addressKind =
AddressKind
.ReadOnly;
520
receiverTemp = EmitReceiverRef(receiver,
AddressKind
.ReadOnly, used: true);
585
receiverTemp = EmitReceiverRef(receiver,
AddressKind
.Constrained, used: true);
684
var temp = EmitAddress(expression.Operand,
AddressKind
.Writeable, used: true);
745
static
AddressKind
getArgumentAddressKind(RefKind refKind)
753
return
AddressKind
.ReadOnly;
759
return refKind == RefKindExtensions.StrictIn ?
AddressKind
.ReadOnlyStrict :
AddressKind
.Writeable;
768
var temp = EmitAddress(expression.Operand,
AddressKind
.ReadOnlyStrict, used);
1281
return EmitFieldLoadReceiverAddress(receiver) ? null : EmitReceiverRef(receiver,
AddressKind
.ReadOnly, used: true);
1356
if (!HasHome(receiver,
AddressKind
.ReadOnly))
1739
LocalDefinition tempOpt = EmitReceiverRef(receiver,
AddressKind
.Writeable, used: true);
1786
AddressKind
? addressKind;
1829
Debug.Assert(addressKind.GetValueOrDefault() !=
AddressKind
.Constrained);
1930
CallKind determineEmitReceiverStrategy(BoundCall call, out
AddressKind
? addressKind, out bool box)
1965
AddressKind
.ReadOnly :
1966
AddressKind
.Writeable;
1994
addressKind = receiverType.IsReadOnly ?
AddressKind
.ReadOnly :
AddressKind
.Writeable;
2016
addressKind = (callKind == CallKind.ConstrainedCallVirt) ?
AddressKind
.Constrained :
AddressKind
.Writeable;
2019
Debug.Assert((callKind != CallKind.ConstrainedCallVirt) || (addressKind.GetValueOrDefault() ==
AddressKind
.Constrained) || receiverType.IsVerifierValue());
2025
void emitReceiver(BoundCall call, CallKind callKind,
AddressKind
? addressKind, bool box, out LocalDefinition tempOpt)
2788
if (!HasHome(left,
AddressKind
.Writeable))
2815
var temp = EmitAddress(target,
AddressKind
.Writeable, used: true);
2844
var temp = EmitAddress(target,
AddressKind
.Writeable, used: true);
2938
var temp = EmitReceiverRef(left.ReceiverOpt,
AddressKind
.Writeable, used: true);
3022
var temp = EmitAddress(left,
AddressKind
.Writeable, used: true);
3038
var temp = EmitAddress(left,
AddressKind
.Writeable, used: true);
3050
var temp = EmitAddress(left,
AddressKind
.Writeable, used: true);
3180
private static
AddressKind
RefAssignmentValueAddressKind(RefKind refKind)
3182
return refKind is RefKind.RefReadOnly or RefKindExtensions.StrictIn or RefKind.RefReadOnlyParameter ?
AddressKind
.ReadOnlyStrict :
AddressKind
.Writeable;
CodeGen\EmitStatement.cs (5)
554
EmitReceiverRef(receiver,
AddressKind
.ReadOnly, used: true);
568
EmitReceiverRef(receiver,
AddressKind
.ReadOnly, used: true);
883
var unexpectedTemp = this.EmitAddress(expressionOpt, this._method.RefKind == RefKind.RefReadOnly ?
AddressKind
.ReadOnlyStrict :
AddressKind
.Writeable, used: true);
1195
var receiverTemp = EmitReceiverRef(left.ReceiverOpt,
AddressKind
.Writeable, used: true);
Lowering\LocalRewriter\LocalRewriter_AssignmentOperator.cs (1)
305
CodeGen.CodeGenerator.
AddressKind
.ReadOnly,
Lowering\LocalRewriter\LocalRewriter_Call.cs (10)
306
thisRefKind == RefKind.Ref ? CodeGenerator.
AddressKind
.Writeable : CodeGenerator.
AddressKind
.ReadOnly,
988
CodeGenerator.
AddressKind
.Writeable,
993
CodeGenerator.
AddressKind
.Writeable,
1001
CodeGenerator.
AddressKind
.Writeable,
1007
CodeGenerator.
AddressKind
.ReadOnly,
1049
CodeGenerator.
AddressKind
.ReadOnly,
1074
static CodeGenerator.
AddressKind
getArgumentAddressKind(RefKind refKind)
1084
return CodeGenerator.
AddressKind
.ReadOnly;
1088
return CodeGenerator.
AddressKind
.Writeable;
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (1)
552
CodeGenerator.
AddressKind
.Writeable,
Lowering\SyntheticBoundNodeFactory.cs (1)
1696
CodeGenerator.
AddressKind
.ReadOnly,