| File: Symbols\SpecializedSymbolCollections.cs | Web Access |
| Project: src\roslyn\src\Compilers\CSharp\Portable\Microsoft.CodeAnalysis.CSharp.csproj (Microsoft.CodeAnalysis.CSharp) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Diagnostics; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.PooledObjects; namespace Microsoft.CodeAnalysis.CSharp.Symbols { internal static partial class SpecializedSymbolCollections { public static PooledHashSet<TSymbol> GetPooledSymbolHashSetInstance<TSymbol>() where TSymbol : Symbol { var instance = PooledSymbolHashSet<TSymbol>.s_poolInstance.Allocate(); Debug.Assert(instance.Count == 0); return instance; } private static class PooledSymbolHashSet<TSymbol> where TSymbol : Symbol { internal static readonly ObjectPool<PooledHashSet<TSymbol>> s_poolInstance = PooledHashSet<TSymbol>.CreatePool(SymbolEqualityComparer.ConsiderEverything); } public static PooledDictionary<KSymbol, V> GetPooledSymbolDictionaryInstance<KSymbol, V>() where KSymbol : Symbol { var instance = PooledSymbolDictionary<KSymbol, V>.s_poolInstance.Allocate(); Debug.Assert(instance.Count == 0); return instance; } private static class PooledSymbolDictionary<TSymbol, V> where TSymbol : Symbol { internal static readonly ObjectPool<PooledDictionary<TSymbol, V>> s_poolInstance = PooledDictionary<TSymbol, V>.CreatePool(SymbolEqualityComparer.ConsiderEverything); } } }