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