private long applyDeltaToMarker(long marker, long markerLimit, long delta) { if (delta == NO_DELTA) return marker; // List was recreated while we were exhausting it. if (delta == pool.length) { assert markerLimit == NO_MARKER; // If we had the entire pool, other list couldn't exist. return NO_MARKER; // We exhausted the entire-pool-sized list. } marker = getArrayIndex(marker, delta); // Just move the marker according to delta. if (marker == markerLimit) return NO_MARKER; // We hit the limit - the list was exhausted. return marker; }
private long incDeltaValue(long markerFrom, long otherMarker, long delta) { if (delta == pool.length) return NO_DELTA; // The (pool-sized) list is being fully drained. long result = delta + 1; if (getArrayIndex(markerFrom, result) == getArrayIndex(otherMarker, 1)) { return NO_DELTA; // The list is being drained, cannot increase the delta anymore. } return result; }
private boolean offerImpl(T t) { long oldState = reserveArrayIndex(EMPTY, OBJECTS); if (oldState == NO_INDEX) return false; // For whatever reason, reserve failed. long originalMarker = EMPTY.getMarker(oldState), delta = EMPTY.getDelta(oldState); int arrayIndex = (int)getArrayIndex(originalMarker, delta); if (pool[arrayIndex] != null) { throwError(oldState, arrayIndex, "non-null"); } pool[arrayIndex] = t; commitArrayIndex(EMPTY, OBJECTS, originalMarker); return true; }
private T takeImpl() { long oldState = reserveArrayIndex(OBJECTS, EMPTY); if (oldState == NO_INDEX) return null; // For whatever reason, reserve failed. long originalMarker = OBJECTS.getMarker(oldState), delta = OBJECTS.getDelta(oldState); int arrayIndex = (int)getArrayIndex(originalMarker, delta); T result = pool[arrayIndex]; if (result == null) { throwError(oldState, arrayIndex, "null"); } pool[arrayIndex] = null; commitArrayIndex(OBJECTS, EMPTY, originalMarker); return result; }
private long applyDeltaToMarker(long marker, long markerLimit, long delta) { if (delta == NO_DELTA) return marker; // List was recreated while we were exhausting it. if (delta == pool.length) { assert markerLimit == NO_MARKER; // If we had the entire pool, other list couldn't exist. return NO_MARKER; // We exhausted the entire-pool-sized list. } marker = getArrayIndex(marker, delta); // Just move the marker according to delta. if (marker == markerLimit) return NO_MARKER; // We hit the limit - the list was exhausted. return marker; }
private long incDeltaValue(long markerFrom, long otherMarker, long delta) { if (delta == pool.length) return NO_DELTA; // The (pool-sized) list is being fully drained. long result = delta + 1; if (getArrayIndex(markerFrom, result) == getArrayIndex(otherMarker, 1)) { return NO_DELTA; // The list is being drained, cannot increase the delta anymore. } return result; }
private boolean offerImpl(T t) { long oldState = reserveArrayIndex(EMPTY, OBJECTS); if (oldState == NO_INDEX) return false; // For whatever reason, reserve failed. long originalMarker = EMPTY.getMarker(oldState), delta = EMPTY.getDelta(oldState); int arrayIndex = (int)getArrayIndex(originalMarker, delta); if (pool[arrayIndex] != null) { throwError(oldState, arrayIndex, "non-null"); } pool[arrayIndex] = t; commitArrayIndex(EMPTY, OBJECTS, originalMarker); return true; }
private T takeImpl() { long oldState = reserveArrayIndex(OBJECTS, EMPTY); if (oldState == NO_INDEX) return null; // For whatever reason, reserve failed. long originalMarker = OBJECTS.getMarker(oldState), delta = OBJECTS.getDelta(oldState); int arrayIndex = (int)getArrayIndex(originalMarker, delta); T result = pool[arrayIndex]; if (result == null) { throwError(oldState, arrayIndex, "null"); } pool[arrayIndex] = null; commitArrayIndex(OBJECTS, EMPTY, originalMarker); return result; }