83 references to AddressKind
Microsoft.CodeAnalysis.CSharp (83)
CodeGen\CodeGenerator_HasHome.cs (8)
33
internal static bool IsAnyReadOnly(
AddressKind
addressKind) => addressKind >=
AddressKind
.ReadOnly;
44
AddressKind
addressKind,
54
if (addressKind ==
AddressKind
.ReadOnly && !expression.Type.IsValueType && peVerifyCompatEnabled)
173
AddressKind
addressKind,
194
if (addressKind ==
AddressKind
.ReadOnlyStrict)
200
if (addressKind ==
AddressKind
.ReadOnly && !peVerifyCompatEnabled)
237
|| !HasHome(receiver,
AddressKind
.ReadOnly, containingSymbol, peVerifyCompatEnabled, stackLocalsOpt);
CodeGen\EmitAddress.cs (23)
24
private LocalDefinition EmitAddress(BoundExpression expression,
AddressKind
addressKind)
177
private static bool UseCallResultAsAddress(BoundCall call,
AddressKind
addressKind)
184
private LocalDefinition EmitPassByCopyAddress(BoundPassByCopy passByCopyExpr,
AddressKind
addressKind)
213
private void EmitConditionalOperatorAddress(BoundConditionalOperator expr,
AddressKind
addressKind)
248
var receiverTemp = EmitAddress(expression.ReferenceTypeReceiver,
AddressKind
.ReadOnly);
255
EmitReceiverRef(expression.ValueTypeReceiver,
AddressKind
.Constrained);
263
private LocalDefinition EmitLocalAddress(BoundLocal localAccess,
AddressKind
addressKind)
296
private LocalDefinition EmitDupAddress(BoundDup dup,
AddressKind
addressKind)
341
private LocalDefinition EmitSequenceAddress(BoundSequence sequence,
AddressKind
addressKind)
393
private void EmitArrayElementAddress(BoundArrayAccess arrayAccess,
AddressKind
addressKind)
416
private bool ShouldEmitReadOnlyPrefix(BoundArrayAccess arrayAccess,
AddressKind
addressKind)
418
if (addressKind ==
AddressKind
.Constrained)
436
private LocalDefinition EmitFieldAddress(BoundFieldAccess fieldAccess,
AddressKind
addressKind)
466
private bool HasHome(BoundExpression expression,
AddressKind
addressKind)
469
private LocalDefinition EmitParameterAddress(BoundParameter parameter,
AddressKind
addressKind)
502
private LocalDefinition EmitReceiverRef(BoundExpression receiver,
AddressKind
addressKind)
534
private static bool BoxNonVerifierReferenceReceiver(TypeSymbol receiverType,
AddressKind
addressKind)
537
return receiverType.TypeKind == TypeKind.TypeParameter && addressKind !=
AddressKind
.Constrained;
543
private LocalDefinition EmitInstanceFieldAddress(BoundFieldAccess fieldAccess,
AddressKind
addressKind)
555
(addressKind ==
AddressKind
.Constrained ?
AddressKind
.Writeable : addressKind) :
556
(addressKind !=
AddressKind
.ReadOnlyStrict ?
AddressKind
.ReadOnly : addressKind));
CodeGen\EmitArrayInitializer.cs (3)
551
EmitAddress(inPlaceTarget,
AddressKind
.Writeable);
703
EmitAddress(inPlaceTarget,
AddressKind
.Writeable);
759
EmitAddress(inPlaceTarget,
AddressKind
.Writeable);
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);
735
internal static
AddressKind
GetArgumentAddressKind(RefKind refKind)
743
return
AddressKind
.ReadOnly;
749
return refKind == RefKindExtensions.StrictIn ?
AddressKind
.ReadOnlyStrict :
AddressKind
.Writeable;
757
var temp = EmitAddress(expression.Operand,
AddressKind
.ReadOnlyStrict);
1122
EmitArrayElementAddress(refArrayAccess.ArrayAccess,
AddressKind
.Writeable);
1212
return EmitFieldLoadReceiverAddress(receiver) ? null : EmitReceiverRef(receiver,
AddressKind
.ReadOnly);
1287
if (!HasHome(receiver,
AddressKind
.ReadOnly))
1670
LocalDefinition tempOpt = EmitReceiverRef(receiver,
AddressKind
.Writeable);
1717
AddressKind
? addressKind;
1760
Debug.Assert(addressKind.GetValueOrDefault() !=
AddressKind
.Constrained);
1861
CallKind determineEmitReceiverStrategy(BoundCall call, out
AddressKind
? addressKind, out bool box)
1896
AddressKind
.ReadOnly :
1897
AddressKind
.Writeable;
1925
addressKind = receiverType.IsReadOnly ?
AddressKind
.ReadOnly :
AddressKind
.Writeable;
1947
addressKind = (callKind == CallKind.ConstrainedCallVirt) ?
AddressKind
.Constrained :
AddressKind
.Writeable;
1950
Debug.Assert((callKind != CallKind.ConstrainedCallVirt) || (addressKind.GetValueOrDefault() ==
AddressKind
.Constrained) || receiverType.IsVerifierValue());
1956
void emitReceiver(BoundCall call, CallKind callKind,
AddressKind
? addressKind, bool box, out LocalDefinition tempOpt)
2701
if (!HasHome(left,
AddressKind
.Writeable))
2728
var temp = EmitAddress(target,
AddressKind
.Writeable);
2757
var temp = EmitAddress(target,
AddressKind
.Writeable);
2851
var temp = EmitReceiverRef(left.ReceiverOpt,
AddressKind
.Writeable);
2935
var temp = EmitAddress(left,
AddressKind
.Writeable);
2946
var temp = EmitAddress(left,
AddressKind
.Writeable);
2958
var temp = EmitAddress(left,
AddressKind
.Writeable);
3055
LocalDefinition temp = EmitAddress(assignmentOperator.Right, lhs.GetRefKind() 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);
1195
var receiverTemp = EmitReceiverRef(left.ReceiverOpt,
AddressKind
.Writeable);
Lowering\LocalRewriter\LocalRewriter_AssignmentOperator.cs (1)
291
CodeGen.CodeGenerator.
AddressKind
.ReadOnlyStrict,
Lowering\LocalRewriter\LocalRewriter_Call.cs (4)
306
thisRefKind == RefKind.Ref ? CodeGenerator.
AddressKind
.Writeable : CodeGenerator.
AddressKind
.ReadOnlyStrict,
724
CodeGenerator.
AddressKind
.Constrained,
968
CodeGenerator.
AddressKind
.ReadOnlyStrict,
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (1)
318
CodeGenerator.
AddressKind
.Constrained,
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (1)
552
CodeGenerator.
AddressKind
.Writeable,
Lowering\SyntheticBoundNodeFactory.cs (1)
1675
CodeGenerator.
AddressKind
.ReadOnly,