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