package org.jctools_voltpatches.queues; import static org.jctools_voltpatches.util.UnsafeRefArrayAccess.*; public final class CircularArrayOffsetCalculator { private CircularArrayOffsetCalculator() { } @SuppressWarnings("unchecked") public static <E> E[] allocate(int capacity) { return (E[]) new Object[capacity]; } /** * @param index desirable element index * @param mask * @return the offset in bytes within the array for a given index. */ public static long calcElementOffset(long index, long mask) { return REF_ARRAY_BASE + ((index & mask) << REF_ELEMENT_SHIFT); } }