88 references to AddressKind
Microsoft.CodeAnalysis.CSharp (88)
CodeGen\CodeGenerator_HasHome.cs (11)
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)
237
AddressKind
addressKind,
258
if (addressKind ==
AddressKind
.ReadOnlyStrict)
264
if (addressKind ==
AddressKind
.ReadOnly && !peVerifyCompatEnabled)
301
|| !HasHome(receiver,
AddressKind
.ReadOnly, containingSymbol, peVerifyCompatEnabled, stackLocalsOpt);
CodeGen\EmitAddress.cs (22)
24
private LocalDefinition EmitAddress(BoundExpression expression,
AddressKind
addressKind, bool used)
197
private static bool UseCallResultAsAddress(BoundCall call,
AddressKind
addressKind)
204
private LocalDefinition EmitPassByCopyAddress(BoundPassByCopy passByCopyExpr,
AddressKind
addressKind, bool used)
234
private void EmitConditionalOperatorAddress(BoundConditionalOperator expr,
AddressKind
addressKind, bool used)
258
private void EmitComplexConditionalReceiverAddress(BoundComplexConditionalReceiver expression,
AddressKind
addressKind, bool used)
290
private LocalDefinition EmitLocalAddress(BoundLocal localAccess,
AddressKind
addressKind, bool used)
324
private LocalDefinition EmitDupAddress(BoundDup dup,
AddressKind
addressKind, bool used)
381
private LocalDefinition EmitSequenceAddress(BoundSequence sequence,
AddressKind
addressKind, bool used)
433
private void EmitArrayElementAddress(BoundArrayAccess arrayAccess,
AddressKind
addressKind)
456
private bool ShouldEmitReadOnlyPrefix(BoundArrayAccess arrayAccess,
AddressKind
addressKind)
458
if (addressKind ==
AddressKind
.Constrained)
476
private LocalDefinition EmitFieldAddress(BoundFieldAccess fieldAccess,
AddressKind
addressKind, bool used)
507
private bool HasHome(BoundExpression expression,
AddressKind
addressKind)
510
private LocalDefinition EmitParameterAddress(BoundParameter parameter,
AddressKind
addressKind, bool used)
546
private LocalDefinition EmitReceiverRef(BoundExpression receiver,
AddressKind
addressKind)
578
private static bool BoxNonVerifierReferenceReceiver(TypeSymbol receiverType,
AddressKind
addressKind)
581
return receiverType.TypeKind == TypeKind.TypeParameter && addressKind !=
AddressKind
.Constrained;
587
private LocalDefinition EmitInstanceFieldAddress(BoundFieldAccess fieldAccess,
AddressKind
addressKind, bool used)
599
(addressKind ==
AddressKind
.Constrained ?
AddressKind
.Writeable : addressKind) :
600
(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)
417
receiverTemp = EmitReceiverRef(receiver,
AddressKind
.ReadOnly);
450
receiverTemp = EmitReceiverRef(receiver,
AddressKind
.Constrained);
496
var
addressKind =
AddressKind
.ReadOnly;
509
receiverTemp = EmitReceiverRef(receiver,
AddressKind
.ReadOnly);
574
receiverTemp = EmitReceiverRef(receiver,
AddressKind
.Constrained);
673
var temp = EmitAddress(expression.Operand,
AddressKind
.Writeable, used: true);
734
static
AddressKind
getArgumentAddressKind(RefKind refKind)
742
return
AddressKind
.ReadOnly;
748
return refKind == RefKindExtensions.StrictIn ?
AddressKind
.ReadOnlyStrict :
AddressKind
.Writeable;
757
var temp = EmitAddress(expression.Operand,
AddressKind
.ReadOnlyStrict, used);
1209
return EmitFieldLoadReceiverAddress(receiver) ? null : EmitReceiverRef(receiver,
AddressKind
.ReadOnly);
1284
if (!HasHome(receiver,
AddressKind
.ReadOnly))
1667
LocalDefinition tempOpt = EmitReceiverRef(receiver,
AddressKind
.Writeable);
1714
AddressKind
? addressKind;
1757
Debug.Assert(addressKind.GetValueOrDefault() !=
AddressKind
.Constrained);
1858
CallKind determineEmitReceiverStrategy(BoundCall call, out
AddressKind
? addressKind, out bool box)
1893
AddressKind
.ReadOnly :
1894
AddressKind
.Writeable;
1922
addressKind = receiverType.IsReadOnly ?
AddressKind
.ReadOnly :
AddressKind
.Writeable;
1944
addressKind = (callKind == CallKind.ConstrainedCallVirt) ?
AddressKind
.Constrained :
AddressKind
.Writeable;
1947
Debug.Assert((callKind != CallKind.ConstrainedCallVirt) || (addressKind.GetValueOrDefault() ==
AddressKind
.Constrained) || receiverType.IsVerifierValue());
1953
void emitReceiver(BoundCall call, CallKind callKind,
AddressKind
? addressKind, bool box, out LocalDefinition tempOpt)
2698
if (!HasHome(left,
AddressKind
.Writeable))
2725
var temp = EmitAddress(target,
AddressKind
.Writeable, used: true);
2754
var temp = EmitAddress(target,
AddressKind
.Writeable, used: true);
2848
var temp = EmitReceiverRef(left.ReceiverOpt,
AddressKind
.Writeable);
2932
var temp = EmitAddress(left,
AddressKind
.Writeable, used: true);
2943
var temp = EmitAddress(left,
AddressKind
.Writeable, used: true);
2955
var temp = EmitAddress(left,
AddressKind
.Writeable, used: true);
3085
private static
AddressKind
RefAssignmentValueAddressKind(RefKind refKind)
3087
return refKind is RefKind.RefReadOnly or RefKindExtensions.StrictIn or RefKind.RefReadOnlyParameter ?
AddressKind
.ReadOnlyStrict :
AddressKind
.Writeable;
CodeGen\EmitStatement.cs (5)
554
EmitReceiverRef(receiver,
AddressKind
.ReadOnly);
568
EmitReceiverRef(receiver,
AddressKind
.ReadOnly);
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);
Lowering\LocalRewriter\LocalRewriter_AssignmentOperator.cs (1)
297
CodeGen.CodeGenerator.
AddressKind
.ReadOnly,
Lowering\LocalRewriter\LocalRewriter_Call.cs (7)
306
thisRefKind == RefKind.Ref ? CodeGenerator.
AddressKind
.Writeable : CodeGenerator.
AddressKind
.ReadOnly,
740
CodeGenerator.
AddressKind
.Constrained,
1025
CodeGenerator.
AddressKind
.ReadOnly,
1050
static CodeGenerator.
AddressKind
getArgumentAddressKind(RefKind refKind)
1060
return CodeGenerator.
AddressKind
.ReadOnly;
1064
return CodeGenerator.
AddressKind
.Writeable;
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (1)
331
CodeGenerator.
AddressKind
.Constrained,
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (1)
552
CodeGenerator.
AddressKind
.Writeable,
Lowering\SyntheticBoundNodeFactory.cs (1)
1696
CodeGenerator.
AddressKind
.ReadOnly,