From: Ahson Khan Date: Sat, 20 Jan 2018 14:40:44 +0000 (-0800) Subject: Add optional integer offset to OwnedMemory Pin (#15946) X-Git-Tag: accepted/tizen/base/20180629.140029~91 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=216a2d93979db085de75afbb2a3e762f51d76000;p=platform%2Fupstream%2Fcoreclr.git Add optional integer offset to OwnedMemory Pin (#15946) --- diff --git a/src/mscorlib/shared/System/Buffers/MemoryHandle.cs b/src/mscorlib/shared/System/Buffers/MemoryHandle.cs index 01f9563..7544038 100644 --- a/src/mscorlib/shared/System/Buffers/MemoryHandle.cs +++ b/src/mscorlib/shared/System/Buffers/MemoryHandle.cs @@ -42,24 +42,6 @@ namespace System.Buffers public bool HasPointer => _pointer != null; /// - /// Adds an offset to the pinned pointer. - /// - /// - /// Throw when pinned pointer is null. - /// - internal void AddOffset(int offset) - { - if (_pointer == null) - { - ThrowHelper.ThrowArgumentNullException(ExceptionArgument.pointer); - } - else - { - _pointer = (void*)((byte*)_pointer + offset); - } - } - - /// /// Frees the pinned handle and releases IRetainable. /// public void Dispose() diff --git a/src/mscorlib/shared/System/Buffers/OwnedMemory.cs b/src/mscorlib/shared/System/Buffers/OwnedMemory.cs index bbde61b..b2d7a74 100644 --- a/src/mscorlib/shared/System/Buffers/OwnedMemory.cs +++ b/src/mscorlib/shared/System/Buffers/OwnedMemory.cs @@ -43,7 +43,7 @@ namespace System.Buffers /// /// Returns a handle for the array that has been pinned and hence its address can be taken /// - public abstract MemoryHandle Pin(); + public abstract MemoryHandle Pin(int offset = 0); /// /// Returns an array segment. diff --git a/src/mscorlib/shared/System/Memory.cs b/src/mscorlib/shared/System/Memory.cs index 9cb6e38..7e89051 100644 --- a/src/mscorlib/shared/System/Memory.cs +++ b/src/mscorlib/shared/System/Memory.cs @@ -244,8 +244,7 @@ namespace System { if (_index < 0) { - memoryHandle = ((OwnedMemory)_object).Pin(); - memoryHandle.AddOffset((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf()); + memoryHandle = ((OwnedMemory)_object).Pin((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf()); } else if (typeof(T) == typeof(char) && _object is string s) { diff --git a/src/mscorlib/shared/System/ReadOnlyMemory.cs b/src/mscorlib/shared/System/ReadOnlyMemory.cs index d0f8a47..c09f012 100644 --- a/src/mscorlib/shared/System/ReadOnlyMemory.cs +++ b/src/mscorlib/shared/System/ReadOnlyMemory.cs @@ -222,8 +222,7 @@ namespace System { if (_index < 0) { - memoryHandle = ((OwnedMemory)_object).Pin(); - memoryHandle.AddOffset((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf()); + memoryHandle = ((OwnedMemory)_object).Pin((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf()); } else if (typeof(T) == typeof(char) && _object is string s) {