using System;
using System.Runtime.CompilerServices;
namespace AlicizaX.ObjectPool
{
///
/// 引用类型键的开放寻址哈希表,使用身份相等性(ReferenceEquals)
///
internal struct ReferenceOpenHashMap
{
private int[] m_Buckets;
private object[] m_Keys;
private int[] m_Values;
private int[] m_Next;
private int m_Count;
private int m_FreeList;
private int m_Mask;
private int m_AllocCount;
private const int MinCapacity = 8;
public int Count => m_Count;
public ReferenceOpenHashMap(int capacity)
{
int cap = NextPowerOf2(Math.Max(capacity, MinCapacity));
m_Mask = cap - 1;
m_Buckets = SlotArrayPool.Rent(cap);
m_Keys = SlotArrayPool