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