Revert "Add optional integer offset to OwnedMemory Pin (#15410)"
authorJan Kotas <jkotas@microsoft.com>
Thu, 14 Dec 2017 03:33:18 +0000 (19:33 -0800)
committerJan Kotas <jkotas@microsoft.com>
Thu, 14 Dec 2017 03:33:18 +0000 (19:33 -0800)
This reverts commit 8931cfa4ebe94f57698b4c1b3ab5689cd467cb8e.

src/mscorlib/shared/System/Buffers/MemoryHandle.cs
src/mscorlib/shared/System/Buffers/OwnedMemory.cs
src/mscorlib/shared/System/Memory.cs
src/mscorlib/shared/System/ReadOnlyMemory.cs

index 8a6b846..6059214 100644 (file)
@@ -21,6 +21,18 @@ namespace System.Buffers
             _handle = handle;
         }
 
+        internal void AddOffset(int offset)
+        {
+            if (_pointer == null)
+            {
+                ThrowHelper.ThrowArgumentNullException(ExceptionArgument.pointer);
+            }
+            else
+            {
+                _pointer = (void*)((byte*)_pointer + offset);
+            }
+        }
+
         [CLSCompliant(false)]
         public void* Pointer => _pointer;
 
index 5ed7d95..1167670 100644 (file)
@@ -25,7 +25,7 @@ namespace System.Buffers
             }
         }
 
-        public abstract MemoryHandle Pin(int offset = 0);
+        public abstract MemoryHandle Pin();
 
         protected internal abstract bool TryGetArray(out ArraySegment<T> arraySegment);
 
index f51a85e..2286d69 100644 (file)
@@ -234,7 +234,8 @@ namespace System
             {
                 if (_index < 0)
                 {
-                    memoryHandle = ((OwnedMemory<T>)_object).Pin((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf<T>());
+                    memoryHandle = ((OwnedMemory<T>)_object).Pin();
+                    memoryHandle.AddOffset((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf<T>());
                 }
                 else if (typeof(T) == typeof(char) && _object is string s)
                 {
index 796c978..12fdaf9 100644 (file)
@@ -216,7 +216,8 @@ namespace System
             {
                 if (_index < 0)
                 {
-                    memoryHandle = ((OwnedMemory<T>)_object).Pin((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf<T>());
+                    memoryHandle = ((OwnedMemory<T>)_object).Pin();
+                    memoryHandle.AddOffset((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf<T>());
                 }
                 else if (typeof(T) == typeof(char) && _object is string s)
                 {