private bool IsEmpty(long slot) { long tag = Miscellanea.UnsignedLeftShift64(slot, 62); Debug.Assert(tag == 0 | tag == 1 | tag == 2); return(tag == 2); }
private long ReindexedSlot(long slot, int next) { int tag = (int)Miscellanea.UnsignedLeftShift64(slot, 62); Debug.Assert(tag == 0 | tag == 1); return(tag == 0 ? FilledValueSlot((int)slot, next) : FilledIdxSlot((int)slot, next)); }
private long Value(long slot) { Debug.Assert(!IsEmpty(slot)); int tag = (int)Miscellanea.UnsignedLeftShift64(slot, 62); Debug.Assert(tag == 0 | tag == 1); return(tag == 0 ? (int)slot : largeInts.Get((int)slot)); }
private int Next(long slot) { Debug.Assert(!IsEmpty(slot)); return((int)(Miscellanea.UnsignedLeftShift64(slot, 32) & 0x3FFFFFFF)); }