@Override void removeAt(int index) { long free = freeValue; long[] keys = set; int capacityMask = keys.length - 1; incrementModCount(); int indexToRemove = index; int indexToShift = indexToRemove; int shiftDistance = 1; while (true) { indexToShift = (indexToShift - 1) & capacityMask; long keyToShift; if ((keyToShift = keys[indexToShift]) == free) { break; } if (((SeparateKVLongKeyMixing.mix(keyToShift) - indexToShift) & capacityMask) >= shiftDistance) { keys[indexToRemove] = keyToShift; indexToRemove = indexToShift; shiftDistance = 1; } else { shiftDistance++; if (indexToShift == 1 + index) { throw new java.util.ConcurrentModificationException(); } } } keys[indexToRemove] = free; postRemoveHook(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
long cur; keyAbsent: if ((cur = keys[index = SeparateKVLongKeyMixing.mix(key) & (capacityMask = keys.length - 1)]) != free) { if (cur == key) {
long cur; keyAbsent: if ((cur = keys[index = SeparateKVLongKeyMixing.mix(key) & (capacityMask = keys.length - 1)]) != free) { if (cur == key) {
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; short[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; short[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; short[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; short[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; byte[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; byte[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; byte[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; byte[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; int[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; int[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; short[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; short[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; char[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; char[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; char[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; char[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; int[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; int[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; short[] vals = values; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; short[] newVals = values; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
int insert(long key, T value) { long free; if (key == (free = freeValue)) { free = changeFree(); } long[] keys = set; int capacityMask; int index; long cur; keyAbsent : if ((cur = keys[(index = (LHash.SeparateKVLongKeyMixing.mix(key)) & (capacityMask = (keys.length) - 1))]) != free) { if (cur == key) { return index; } else { while (true) { if ((cur = keys[(index = (index - 1) & capacityMask)]) == free) { break keyAbsent; } else if (cur == key) { return index; } } } } keys[index] = key; values[index] = value; postInsertHook(); return -1; }
@Override void rehash(int newCapacity) { int mc = modCount(); long free = freeValue; long[] keys = set; initForRehash(newCapacity); mc++; // modCount is incremented in initForRehash() long[] newKeys = set; int capacityMask = newKeys.length - 1; for (int i = keys.length - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if (newKeys[index = SeparateKVLongKeyMixing.mix(key) & capacityMask] != free) { while (true) { if (newKeys[(index = (index - 1) & capacityMask)] == free) { break; } } } newKeys[index] = key; } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
void rehash(int newCapacity) { long free = freeValue; long[] keys = set; T[] vals = values; initForRehash(newCapacity); long[] newKeys = set; int capacityMask = (newKeys.length) - 1; T[] newVals = values; for (int i = (keys.length) - 1; i >= 0; i--) { long key; if ((key = keys[i]) != free) { int index; if ((newKeys[(index = (LHash.SeparateKVLongKeyMixing.mix(key)) & capacityMask)]) != free) { while (true) { if ((newKeys[(index = (index - 1) & capacityMask)]) == free) { break; } } } newKeys[index] = key; newVals[index] = vals[i]; } } }
private static final int hash(long key){ return SeparateKVLongKeyMixing.mix(key); }