src\Dependencies\Collections\Extensions\IEnumerableExtensions.cs (21)
347[NotNullWhen(true)] out ArrayBuilder<TResult>? builder)
366builder = ArrayBuilder<TResult>.GetInstance(count);
372builder = ArrayBuilder<TResult>.GetInstance();
378if (!TryGetBuilder<T, T>(values, useCountForBuilder: false, out var builder))
392if (!TryGetBuilder<T, T>(values, useCountForBuilder: false, out var result))
409if (!TryGetBuilder<TSource, TResult>(source, useCountForBuilder: true, out var builder))
419if (!TryGetBuilder<TItem, TResult>(source, useCountForBuilder: false, out var builder))
433if (!TryGetBuilder<TSource, TResult>(source, useCountForBuilder: true, out var builder))
451var builder = ArrayBuilder<TResult>.GetInstance();
487if (!TryGetBuilder<TSource, TResult>(source, useCountForBuilder: false, out var builder))
498if (!TryGetBuilder<TItem, TResult>(source, useCountForBuilder: false, out var builder))
513var builder = ArrayBuilder<TResult>.GetInstance(source.Count);
526var builder = ArrayBuilder<TResult>.GetInstance(source.Count);
535if (!TryGetBuilder<TSource, TResult>(source, useCountForBuilder: false, out var builder))
549if (!TryGetBuilder<TItem, TResult>(source, useCountForBuilder: true, out var builder))
563if (!TryGetBuilder<TItem, TResult>(source, useCountForBuilder: true, out var builder))
577if (!TryGetBuilder<TItem, TResult>(source, useCountForBuilder: true, out var builder))
588if (!TryGetBuilder<TItem, TResult>(source, useCountForBuilder: false, out var builder))
src\Dependencies\PooledObjects\ArrayBuilder.cs (46)
16[DebuggerTypeProxy(typeof(ArrayBuilder<>.DebuggerProxy))]
31private readonly ArrayBuilder<T> _builder;
33public DebuggerProxy(ArrayBuilder<T> builder)
58private readonly ObjectPool<ArrayBuilder<T>>? _pool;
69private ArrayBuilder(ObjectPool<ArrayBuilder<T>> pool)
409var tmp = ArrayBuilder<U>.GetInstance(Count);
457public void FreeAll(Func<T, ArrayBuilder<T>?> getNested)
503private static readonly ObjectPool<ArrayBuilder<T>> s_poolInstance = CreatePool();
504public static ArrayBuilder<T> GetInstance()
506var builder = s_poolInstance.Allocate();
511public static ArrayBuilder<T> GetInstance(int capacity)
513var builder = GetInstance();
518public static ArrayBuilder<T> GetInstance(int capacity, T fillWithValue)
520var builder = GetInstance();
531public static ObjectPool<ArrayBuilder<T>> CreatePool()
536public static ObjectPool<ArrayBuilder<T>> CreatePool(int size)
538ObjectPool<ArrayBuilder<T>>? pool = null;
539pool = new ObjectPool<ArrayBuilder<T>>(() => new ArrayBuilder<T>(pool!), size);
578var accumulator = new Dictionary<K, ArrayBuilder<T>>(Count, comparer);
583if (!accumulator.TryGetValue(key, out var bucket))
585bucket = ArrayBuilder<T>.GetInstance();
603public void AddRange(ArrayBuilder<T> items)
608public void AddRange<U>(ArrayBuilder<U> items, Func<U, T> selector)
616public void AddRange<U>(ArrayBuilder<U> items) where U : T
621public void AddRange<U>(ArrayBuilder<U> items, int start, int length) where U : T
747var result = ArrayBuilder<S>.GetInstance(Count);
837var builder = ArrayBuilder<TResult>.GetInstance(Count);
875var builder = ArrayBuilder<TResult>.GetInstance(Count);
913var builder = ArrayBuilder<TResult>.GetInstance(Count);
953private static readonly ObjectPool<ArrayBuilder<T>> s_keepLargeInstancesPool = CreatePool();
955public static PooledDisposer<ArrayBuilder<T>> GetInstance(out ArrayBuilder<T> instance)
958public static PooledDisposer<ArrayBuilder<T>> GetInstance(int capacity, out ArrayBuilder<T> instance)
961return new PooledDisposer<ArrayBuilder<T>>(instance);
964public static PooledDisposer<ArrayBuilder<T>> GetInstance(int capacity, T fillWithValue, out ArrayBuilder<T> instance)
967return new PooledDisposer<ArrayBuilder<T>>(instance);
970public static PooledDisposer<ArrayBuilder<T>> GetInstance(bool discardLargeInstances, out ArrayBuilder<T> instance)
975return new PooledDisposer<ArrayBuilder<T>>(instance, discardLargeInstances);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\TriviaEngine\AbstractTriviaFormatter.cs (21)
40private delegate LineColumnDelta Formatter<T>(LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<T> changes, CancellationToken cancellationToken);
45private delegate void WhitespaceAppender<T>(LineColumn lineColumn, LineColumnDelta delta, TextSpan span, ArrayBuilder<T> changes);
184protected abstract LineColumnDelta Format(LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<SyntaxTrivia> changes, CancellationToken cancellationToken);
189protected abstract LineColumnDelta Format(LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<TextChange> changes, CancellationToken cancellationToken);
239using var _ = ArrayBuilder<SyntaxTrivia>.GetInstance(out var triviaList);
259private static void AddRange(ArrayBuilder<SyntaxTrivia> result, SyntaxTriviaList triviaList)
267using var _ = ArrayBuilder<TextChange>.GetInstance(out var changes);
283private LineColumn FormatTrivia<T>(Formatter<T> formatter, WhitespaceAppender<T> whitespaceAdder, ArrayBuilder<T> changes, CancellationToken cancellationToken)
377ArrayBuilder<T> changes,
624private void AddExtraLines(int linesBetweenTokens, ArrayBuilder<SyntaxTrivia> changes)
628using var _ = ArrayBuilder<SyntaxTrivia>.GetInstance(out var lineBreaks);
641private int GetInsertionIndex(ArrayBuilder<SyntaxTrivia> changes)
674private void AddExtraLines(int linesBetweenTokens, ArrayBuilder<TextChange> changes)
712private bool TryGetMatchingChangeIndex(ArrayBuilder<TextChange> changes, out int index)
730private TextSpan GetInsertionSpan(ArrayBuilder<TextChange> changes)
757ArrayBuilder<SyntaxTrivia> changes)
766ArrayBuilder<SyntaxTrivia> changes)
825private void AddWhitespaceTextChange(LineColumn lineColumn, LineColumnDelta delta, TextSpan span, ArrayBuilder<TextChange> changes)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\IDictionaryExtensions.cs (6)
76public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ArrayBuilder<TValue>> dictionary, TKey key, TValue value)
79if (!dictionary.TryGetValue(key, out var builder))
81builder = ArrayBuilder<TValue>.GetInstance();
88public static void MultiAddRange<TKey, TValue>(this IDictionary<TKey, ArrayBuilder<TValue>> dictionary, TKey key, IEnumerable<TValue> values)
91if (!dictionary.TryGetValue(key, out var builder))
93builder = ArrayBuilder<TValue>.GetInstance();
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\PooledBuilderExtensions.cs (9)
29public static Dictionary<K, ImmutableArray<V>> ToMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
43public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
47public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V, TArg>(this PooledDictionary<K, ArrayBuilder<V>> builders, Func<K, TArg, bool>? where, TArg whereArg)
68public static void FreeValues<K, V>(this IReadOnlyDictionary<K, ArrayBuilder<V>> builders)
77public static ImmutableArray<T> ToFlattenedImmutableArrayAndFree<T>(this ArrayBuilder<ArrayBuilder<T>> builders)
91var result = ArrayBuilder<T>.GetInstance(builders.Sum(b => b.Count));
93foreach (var builder in builders)