summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAhson Khan <ahkha@microsoft.com>2018-01-20 06:40:44 -0800
committerJan Kotas <jkotas@microsoft.com>2018-01-20 06:40:44 -0800
commit216a2d93979db085de75afbb2a3e762f51d76000 (patch)
tree5f425f6c166de7f711ab21e51310500d09a4afdc /src
parentc7c2869ca0def15c25b8043ac78a378e0145bac8 (diff)
downloadcoreclr-216a2d93979db085de75afbb2a3e762f51d76000.tar.gz
coreclr-216a2d93979db085de75afbb2a3e762f51d76000.tar.bz2
coreclr-216a2d93979db085de75afbb2a3e762f51d76000.zip
Add optional integer offset to OwnedMemory Pin (#15946)
Diffstat (limited to 'src')
-rw-r--r--src/mscorlib/shared/System/Buffers/MemoryHandle.cs18
-rw-r--r--src/mscorlib/shared/System/Buffers/OwnedMemory.cs2
-rw-r--r--src/mscorlib/shared/System/Memory.cs3
-rw-r--r--src/mscorlib/shared/System/ReadOnlyMemory.cs3
4 files changed, 3 insertions, 23 deletions
diff --git a/src/mscorlib/shared/System/Buffers/MemoryHandle.cs b/src/mscorlib/shared/System/Buffers/MemoryHandle.cs
index 01f9563b9c..7544038629 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;
/// <summary>
- /// Adds an offset to the pinned pointer.
- /// </summary>
- /// <exception cref="System.ArgumentNullException">
- /// Throw when pinned pointer is null.
- /// </exception>
- internal void AddOffset(int offset)
- {
- if (_pointer == null)
- {
- ThrowHelper.ThrowArgumentNullException(ExceptionArgument.pointer);
- }
- else
- {
- _pointer = (void*)((byte*)_pointer + offset);
- }
- }
-
- /// <summary>
/// Frees the pinned handle and releases IRetainable.
/// </summary>
public void Dispose()
diff --git a/src/mscorlib/shared/System/Buffers/OwnedMemory.cs b/src/mscorlib/shared/System/Buffers/OwnedMemory.cs
index bbde61bf1f..b2d7a74c49 100644
--- a/src/mscorlib/shared/System/Buffers/OwnedMemory.cs
+++ b/src/mscorlib/shared/System/Buffers/OwnedMemory.cs
@@ -43,7 +43,7 @@ namespace System.Buffers
/// <summary>
/// Returns a handle for the array that has been pinned and hence its address can be taken
/// </summary>
- public abstract MemoryHandle Pin();
+ public abstract MemoryHandle Pin(int offset = 0);
/// <summary>
/// Returns an array segment.
diff --git a/src/mscorlib/shared/System/Memory.cs b/src/mscorlib/shared/System/Memory.cs
index 9cb6e385c1..7e89051d31 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<T>)_object).Pin();
- memoryHandle.AddOffset((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf<T>());
+ memoryHandle = ((OwnedMemory<T>)_object).Pin((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf<T>());
}
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 d0f8a4790d..c09f01262e 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<T>)_object).Pin();
- memoryHandle.AddOffset((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf<T>());
+ memoryHandle = ((OwnedMemory<T>)_object).Pin((_index & RemoveOwnedFlagBitMask) * Unsafe.SizeOf<T>());
}
else if (typeof(T) == typeof(char) && _object is string s)
{