83 references to AddressKind
Microsoft.CodeAnalysis.CSharp (83)
CodeGen\CodeGenerator_HasHome.cs (8)
33internal static bool IsAnyReadOnly(AddressKind addressKind) => addressKind >= AddressKind.ReadOnly; 44AddressKind addressKind, 54if (addressKind == AddressKind.ReadOnly && !expression.Type.IsValueType && peVerifyCompatEnabled) 173AddressKind addressKind, 194if (addressKind == AddressKind.ReadOnlyStrict) 200if (addressKind == AddressKind.ReadOnly && !peVerifyCompatEnabled) 237|| !HasHome(receiver, AddressKind.ReadOnly, containingSymbol, peVerifyCompatEnabled, stackLocalsOpt);
CodeGen\EmitAddress.cs (23)
24private LocalDefinition EmitAddress(BoundExpression expression, AddressKind addressKind) 177private static bool UseCallResultAsAddress(BoundCall call, AddressKind addressKind) 184private LocalDefinition EmitPassByCopyAddress(BoundPassByCopy passByCopyExpr, AddressKind addressKind) 213private void EmitConditionalOperatorAddress(BoundConditionalOperator expr, AddressKind addressKind) 248var receiverTemp = EmitAddress(expression.ReferenceTypeReceiver, AddressKind.ReadOnly); 255EmitReceiverRef(expression.ValueTypeReceiver, AddressKind.Constrained); 263private LocalDefinition EmitLocalAddress(BoundLocal localAccess, AddressKind addressKind) 296private LocalDefinition EmitDupAddress(BoundDup dup, AddressKind addressKind) 341private LocalDefinition EmitSequenceAddress(BoundSequence sequence, AddressKind addressKind) 393private void EmitArrayElementAddress(BoundArrayAccess arrayAccess, AddressKind addressKind) 416private bool ShouldEmitReadOnlyPrefix(BoundArrayAccess arrayAccess, AddressKind addressKind) 418if (addressKind == AddressKind.Constrained) 436private LocalDefinition EmitFieldAddress(BoundFieldAccess fieldAccess, AddressKind addressKind) 466private bool HasHome(BoundExpression expression, AddressKind addressKind) 469private LocalDefinition EmitParameterAddress(BoundParameter parameter, AddressKind addressKind) 502private LocalDefinition EmitReceiverRef(BoundExpression receiver, AddressKind addressKind) 534private static bool BoxNonVerifierReferenceReceiver(TypeSymbol receiverType, AddressKind addressKind) 537return receiverType.TypeKind == TypeKind.TypeParameter && addressKind != AddressKind.Constrained; 543private LocalDefinition EmitInstanceFieldAddress(BoundFieldAccess fieldAccess, AddressKind addressKind) 555(addressKind == AddressKind.Constrained ? AddressKind.Writeable : addressKind) : 556(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 (36)
420receiverTemp = EmitReceiverRef(receiver, AddressKind.ReadOnly); 453receiverTemp = EmitReceiverRef(receiver, AddressKind.Constrained); 499var addressKind = AddressKind.ReadOnly; 512receiverTemp = EmitReceiverRef(receiver, AddressKind.ReadOnly); 577receiverTemp = EmitReceiverRef(receiver, AddressKind.Constrained); 676var temp = EmitAddress(expression.Operand, AddressKind.Writeable); 738internal static AddressKind GetArgumentAddressKind(RefKind refKind) 746return AddressKind.ReadOnly; 752return refKind == RefKindExtensions.StrictIn ? AddressKind.ReadOnlyStrict : AddressKind.Writeable; 760var temp = EmitAddress(expression.Operand, AddressKind.ReadOnlyStrict); 1125EmitArrayElementAddress(refArrayAccess.ArrayAccess, AddressKind.Writeable); 1215return EmitFieldLoadReceiverAddress(receiver) ? null : EmitReceiverRef(receiver, AddressKind.ReadOnly); 1290if (!HasHome(receiver, AddressKind.ReadOnly)) 1659LocalDefinition tempOpt = EmitReceiverRef(receiver, AddressKind.Writeable); 1706AddressKind? addressKind; 1749Debug.Assert(addressKind.GetValueOrDefault() != AddressKind.Constrained); 1850CallKind determineEmitReceiverStrategy(BoundCall call, out AddressKind? addressKind, out bool box) 1885AddressKind.ReadOnly : 1886AddressKind.Writeable; 1914addressKind = receiverType.IsReadOnly ? AddressKind.ReadOnly : AddressKind.Writeable; 1936addressKind = (callKind == CallKind.ConstrainedCallVirt) ? AddressKind.Constrained : AddressKind.Writeable; 1939Debug.Assert((callKind != CallKind.ConstrainedCallVirt) || (addressKind.GetValueOrDefault() == AddressKind.Constrained) || receiverType.IsVerifierValue()); 1945void emitReceiver(BoundCall call, CallKind callKind, AddressKind? addressKind, bool box, out LocalDefinition tempOpt) 2683if (!HasHome(left, AddressKind.Writeable)) 2710var temp = EmitAddress(target, AddressKind.Writeable); 2739var temp = EmitAddress(target, AddressKind.Writeable); 2833var temp = EmitReceiverRef(left.ReceiverOpt, AddressKind.Writeable); 2917var temp = EmitAddress(left, AddressKind.Writeable); 2928var temp = EmitAddress(left, AddressKind.Writeable); 2940var temp = EmitAddress(left, AddressKind.Writeable); 3037LocalDefinition temp = EmitAddress(assignmentOperator.Right, lhs.GetRefKind() 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)
285CodeGen.CodeGenerator.AddressKind.ReadOnlyStrict,
Lowering\LocalRewriter\LocalRewriter_Call.cs (4)
306thisRefKind == RefKind.Ref ? CodeGenerator.AddressKind.Writeable : CodeGenerator.AddressKind.ReadOnlyStrict, 720CodeGenerator.AddressKind.Constrained, 966CodeGenerator.AddressKind.ReadOnlyStrict,
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (1)
317CodeGenerator.AddressKind.Constrained,
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (1)
552CodeGenerator.AddressKind.Writeable,
Lowering\SyntheticBoundNodeFactory.cs (1)
1670CodeGenerator.AddressKind.ReadOnly,