diff options
Diffstat (limited to 'src/mscorlib/src/System/ReadOnlySpan.cs')
-rw-r--r-- | src/mscorlib/src/System/ReadOnlySpan.cs | 31 |
1 files changed, 7 insertions, 24 deletions
diff --git a/src/mscorlib/src/System/ReadOnlySpan.cs b/src/mscorlib/src/System/ReadOnlySpan.cs index 76c63d5d8b..8d0fbad0fc 100644 --- a/src/mscorlib/src/System/ReadOnlySpan.cs +++ b/src/mscorlib/src/System/ReadOnlySpan.cs @@ -103,7 +103,7 @@ namespace System [MethodImpl(MethodImplOptions.AggressiveInlining)] public unsafe ReadOnlySpan(void* pointer, int length) { - if (JitHelpers.ContainsReferences<T>()) + if (RuntimeHelpers.IsReferenceOrContainsReferences<T>()) ThrowHelper.ThrowInvalidTypeWithPointersNotSupported(typeof(T)); if (length < 0) ThrowHelper.ThrowArgumentOutOfRangeException(); @@ -114,28 +114,15 @@ namespace System /// <summary> /// Create a new read-only span over a portion of a regular managed object. This can be useful - /// if part of a managed object represents a "fixed array." This is dangerous because - /// "length" is not checked, nor is the fact that "rawPointer" actually lies within the object. + /// if part of a managed object represents a "fixed array." This is dangerous because neither the + /// <paramref name="length"/> is checked, nor <paramref name="obj"/> being null, nor the fact that + /// "rawPointer" actually lies within <paramref name="obj"/>. /// </summary> /// <param name="obj">The managed object that contains the data to span over.</param> /// <param name="objectData">A reference to data within that object.</param> /// <param name="length">The number of <typeparamref name="T"/> elements the memory contains.</param> - /// <exception cref="System.ArgumentNullException"> - /// Thrown when the specified object is null. - /// </exception> - /// <exception cref="System.ArgumentOutOfRangeException"> - /// Thrown when the specified <paramref name="length"/> is negative. - /// </exception> [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static ReadOnlySpan<T> DangerousCreate(object obj, ref T objectData, int length) - { - if (obj == null) - ThrowHelper.ThrowArgumentNullException(ExceptionArgument.obj); - if (length < 0) - ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.length); - - return new ReadOnlySpan<T>(ref objectData, length); - } + public static ReadOnlySpan<T> DangerousCreate(object obj, ref T objectData, int length) => new ReadOnlySpan<T>(ref objectData, length); // Constructor for internal use only. [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -244,9 +231,7 @@ namespace System [EditorBrowsable(EditorBrowsableState.Never)] public override bool Equals(object obj) { - ThrowHelper.ThrowNotSupportedException_CannotCallEqualsOnSpan(); - // Prevent compiler error CS0161: 'Span<T>.Equals(object)': not all code paths return a value - return default(bool); + throw new NotSupportedException(SR.NotSupported_CannotCallEqualsOnSpan); } /// <summary> @@ -259,9 +244,7 @@ namespace System [EditorBrowsable(EditorBrowsableState.Never)] public override int GetHashCode() { - ThrowHelper.ThrowNotSupportedException_CannotCallGetHashCodeOnSpan(); - // Prevent compiler error CS0161: 'Span<T>.GetHashCode()': not all code paths return a value - return default(int); + throw new NotSupportedException(SR.NotSupported_CannotCallGetHashCodeOnSpan); } /// <summary> |