83 references to AddressKind
Microsoft.CodeAnalysis.CSharp (83)
CodeGen\CodeGenerator_HasHome.cs (9)
33
internal static bool IsAnyReadOnly(
AddressKind
addressKind) => addressKind >=
AddressKind
.ReadOnly;
44
AddressKind
addressKind,
54
if (addressKind ==
AddressKind
.ReadOnly && !expression.Type.IsValueType && peVerifyCompatEnabled)
126
return HasHome(right.ArrayAccess,
AddressKind
.Writeable, containingSymbol, peVerifyCompatEnabled, stackLocalsOpt);
177
AddressKind
addressKind,
198
if (addressKind ==
AddressKind
.ReadOnlyStrict)
204
if (addressKind ==
AddressKind
.ReadOnly && !peVerifyCompatEnabled)
241
|| !HasHome(receiver,
AddressKind
.ReadOnly, containingSymbol, peVerifyCompatEnabled, stackLocalsOpt);
CodeGen\EmitAddress.cs (23)
24
private LocalDefinition EmitAddress(BoundExpression expression,
AddressKind
addressKind)
183
private static bool UseCallResultAsAddress(BoundCall call,
AddressKind
addressKind)
190
private LocalDefinition EmitPassByCopyAddress(BoundPassByCopy passByCopyExpr,
AddressKind
addressKind)
219
private void EmitConditionalOperatorAddress(BoundConditionalOperator expr,
AddressKind
addressKind)
254
var receiverTemp = EmitAddress(expression.ReferenceTypeReceiver,
AddressKind
.ReadOnly);
261
EmitReceiverRef(expression.ValueTypeReceiver,
AddressKind
.Constrained);
269
private LocalDefinition EmitLocalAddress(BoundLocal localAccess,
AddressKind
addressKind)
302
private LocalDefinition EmitDupAddress(BoundDup dup,
AddressKind
addressKind)
347
private LocalDefinition EmitSequenceAddress(BoundSequence sequence,
AddressKind
addressKind)
399
private void EmitArrayElementAddress(BoundArrayAccess arrayAccess,
AddressKind
addressKind)
422
private bool ShouldEmitReadOnlyPrefix(BoundArrayAccess arrayAccess,
AddressKind
addressKind)
424
if (addressKind ==
AddressKind
.Constrained)
442
private LocalDefinition EmitFieldAddress(BoundFieldAccess fieldAccess,
AddressKind
addressKind)
472
private bool HasHome(BoundExpression expression,
AddressKind
addressKind)
475
private LocalDefinition EmitParameterAddress(BoundParameter parameter,
AddressKind
addressKind)
508
private LocalDefinition EmitReceiverRef(BoundExpression receiver,
AddressKind
addressKind)
540
private static bool BoxNonVerifierReferenceReceiver(TypeSymbol receiverType,
AddressKind
addressKind)
543
return receiverType.TypeKind == TypeKind.TypeParameter && addressKind !=
AddressKind
.Constrained;
549
private LocalDefinition EmitInstanceFieldAddress(BoundFieldAccess fieldAccess,
AddressKind
addressKind)
561
(addressKind ==
AddressKind
.Constrained ?
AddressKind
.Writeable : addressKind) :
562
(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 (35)
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);
1215
return EmitFieldLoadReceiverAddress(receiver) ? null : EmitReceiverRef(receiver,
AddressKind
.ReadOnly);
1290
if (!HasHome(receiver,
AddressKind
.ReadOnly))
1673
LocalDefinition tempOpt = EmitReceiverRef(receiver,
AddressKind
.Writeable);
1720
AddressKind
? addressKind;
1763
Debug.Assert(addressKind.GetValueOrDefault() !=
AddressKind
.Constrained);
1864
CallKind determineEmitReceiverStrategy(BoundCall call, out
AddressKind
? addressKind, out bool box)
1899
AddressKind
.ReadOnly :
1900
AddressKind
.Writeable;
1928
addressKind = receiverType.IsReadOnly ?
AddressKind
.ReadOnly :
AddressKind
.Writeable;
1950
addressKind = (callKind == CallKind.ConstrainedCallVirt) ?
AddressKind
.Constrained :
AddressKind
.Writeable;
1953
Debug.Assert((callKind != CallKind.ConstrainedCallVirt) || (addressKind.GetValueOrDefault() ==
AddressKind
.Constrained) || receiverType.IsVerifierValue());
1959
void emitReceiver(BoundCall call, CallKind callKind,
AddressKind
? addressKind, bool box, out LocalDefinition tempOpt)
2704
if (!HasHome(left,
AddressKind
.Writeable))
2731
var temp = EmitAddress(target,
AddressKind
.Writeable);
2760
var temp = EmitAddress(target,
AddressKind
.Writeable);
2854
var temp = EmitReceiverRef(left.ReceiverOpt,
AddressKind
.Writeable);
2938
var temp = EmitAddress(left,
AddressKind
.Writeable);
2949
var temp = EmitAddress(left,
AddressKind
.Writeable);
2961
var temp = EmitAddress(left,
AddressKind
.Writeable);
3083
LocalDefinition temp = EmitAddress(right, 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);
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,