diff --git a/Recyclable.Collections/RecyclableList.cs b/Recyclable.Collections/RecyclableList.cs index 31eb0f2..8ed94a0 100644 --- a/Recyclable.Collections/RecyclableList.cs +++ b/Recyclable.Collections/RecyclableList.cs @@ -330,6 +330,23 @@ namespace Recyclable.Collections return (long)newMemoryBlocks.Length << minBlockSizePow2Shift; } + [MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)] + protected static void SetupBlockArrayPooling(RecyclableList list, int blockSize, ArrayPool? blockArrayPool = null) + { + list._blockSize = blockSize; + list._blockSizePow2Shift = (byte)(31 - BitOperations.LeadingZeroCount((uint)blockSize)); + if (blockSize >= RecyclableDefaults.MinPooledArrayLength) + { + list._blockPoolingRequired = true; + list._blockArrayPool = blockArrayPool ?? RecyclableArrayPool.Shared(blockSize); + } + else + { + list._blockPoolingRequired = false; + list._blockArrayPool = RecyclableArrayPool.Null; + } + } + [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.AggressiveOptimization)] public static long EnsureCapacity(RecyclableList list, long requestedCapacity) { @@ -349,23 +366,6 @@ namespace Recyclable.Collections return newCapacity; } - [MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)] - protected static void SetupBlockArrayPooling(RecyclableList list, int blockSize, ArrayPool? blockArrayPool = null) - { - list._blockSize = blockSize; - list._blockSizePow2Shift = (byte)(31 - BitOperations.LeadingZeroCount((uint)blockSize)); - if (blockSize >= RecyclableDefaults.MinPooledArrayLength) - { - list._blockPoolingRequired = true; - list._blockArrayPool = blockArrayPool ?? RecyclableArrayPool.Shared(blockSize); - } - else - { - list._blockPoolingRequired = false; - list._blockArrayPool = RecyclableArrayPool.Null; - } - } - [MethodImpl(MethodImplOptions.AggressiveOptimization)] #pragma warning disable CS8618 // It's set by SetupBlockArrayPooling public RecyclableList(int minBlockSize = RecyclableDefaults.BlockSize, long? expectedItemsCount = default, ArrayPool? memoryBlocksPool = default, ArrayPool? blockArrayPool = default)