static void EnsureCapacityCore<T>(ref T[] array, int index, ArrayPool<T> pool) { if (array.Length <= index) { var newSize = array.Length * 2; var newArray = pool.Rent((index < newSize) ? newSize : (index * 2)); Array.Copy(array, 0, newArray, 0, array.Length); pool.Return(array, clearArray: !RuntimeHelpersAbstraction.IsWellKnownNoReferenceContainsType<T>()); array = newArray; } }
public void Dispose() { if (pool != null) { // clear manually(length optimize) if (!RuntimeHelpersAbstraction.IsWellKnownNoReferenceContainsType <T>()) { System.Array.Clear(Array, 0, Length); } pool.Return(Array, clearArray: false); pool = null; } }
public void Dispose() { DisposeManually(!RuntimeHelpersAbstraction.IsWellKnownNoReferenceContainsType <T>()); }