File: Language\Legacy\LegacySyntaxNodeExtensions.ChildSyntaxListReversedEnumeratorStack.Policy.cs
Web Access
Project: src\src\Razor\src\Compiler\Microsoft.CodeAnalysis.Razor.Compiler\src\Microsoft.CodeAnalysis.Razor.Compiler.csproj (Microsoft.CodeAnalysis.Razor.Compiler)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using Microsoft.AspNetCore.Razor.Language.Syntax;
using Microsoft.Extensions.ObjectPool;
 
namespace Microsoft.AspNetCore.Razor.Language.Legacy;
 
internal static partial class LegacySyntaxNodeExtensions
{
    private partial struct ChildSyntaxListReversedEnumeratorStack
    {
        private sealed class Policy : IPooledObjectPolicy<ChildSyntaxList.Reversed.Enumerator[]>
        {
            public static readonly Policy Instance = new();
 
            private Policy()
            {
            }
 
            public ChildSyntaxList.Reversed.Enumerator[] Create() => new ChildSyntaxList.Reversed.Enumerator[16];
 
            public bool Return(ChildSyntaxList.Reversed.Enumerator[] stack)
            {
                // Return only reasonably-sized stacks to the pool.
                if (stack.Length < MaxArraySize)
                {
                    Array.Clear(stack, 0, stack.Length);
                    return true;
                }
 
                return false;
            }
        }
    }
}