This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch 681-handle-the-out-of-memory-errors
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
The following commit(s) were added to
refs/heads/681-handle-the-out-of-memory-errors by this push:
new d3250359 Improve formatting and fix minor issues
d3250359 is described below
commit d3250359d02c7b7a37480c181f6c2a450fa9f7ea
Author: Bertil Chapuis <[email protected]>
AuthorDate: Fri Jul 14 23:23:36 2023 +0200
Improve formatting and fix minor issues
---
.../collection/Long2LongOpenHashDataMap.java | 25 ++++----
.../collection/Long2LongPackedOpenHashDataMap.java | 72 ++++++++++++++--------
.../collection/Long2ObjectOpenHashDataMap.java | 27 ++++----
3 files changed, 69 insertions(+), 55 deletions(-)
diff --git
a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongOpenHashDataMap.java
b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongOpenHashDataMap.java
index 117fea28..485e85f0 100644
---
a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongOpenHashDataMap.java
+++
b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongOpenHashDataMap.java
@@ -262,8 +262,9 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
}
key.set(pos, k);
value.set(pos, defRetValue + incr);
- if (size.incrementAndGet() >= maxFill)
+ if (size.incrementAndGet() >= maxFill) {
rehash(bigArraySize(size.get() + 1, f));
+ }
return defRetValue;
}
@@ -296,7 +297,6 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
}
@Override
-
public long remove(final long k) {
if (((k) == 0)) {
if (containsNullKey) {
@@ -324,7 +324,6 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
}
@Override
-
public long get(final long k) {
if (((k) == 0)) {
return containsNullKey ? value.get(n) : defRetValue;
@@ -350,7 +349,6 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
}
@Override
-
public boolean containsKey(final long k) {
if (((k) == 0)) {
return containsNullKey;
@@ -392,7 +390,6 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
* {@inheritDoc}
*/
@Override
-
public long getOrDefault(final long k, final long defaultValue) {
if (((k) == 0)) {
return containsNullKey ? value.get(n) : defaultValue;
@@ -434,7 +431,6 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
* {@inheritDoc}
*/
@Override
-
public boolean remove(final long k, final long v) {
if (((k) == 0)) {
if (containsNullKey && ((v) == (value.get(n)))) {
@@ -641,6 +637,8 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
}
size.set(0);
containsNullKey = false;
+ key.clear();
+ value.clear();
}
@Override
@@ -722,7 +720,6 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
*
* @deprecated Please use the corresponding type-specific method instead.
*/
- @Deprecated
@Override
public Long getValue() {
return value.get(index);
@@ -733,7 +730,6 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
*
* @deprecated Please use the corresponding type-specific method instead.
*/
- @Deprecated
@Override
public Long setValue(final Long v) {
return setValue((v).longValue());
@@ -832,7 +828,7 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
if (--pos < 0) {
// We are just enumerating elements from the wrapped list.
last = Integer.MIN_VALUE;
- final long k = wrapped.getLong((int) -pos - 1); // TODO: check if
-pos - 1 is correct
+ final long k = wrapped.getLong((int) -pos - 1);
long p = (int) HashCommon.mix((k)) & mask;
while (!(k == (key.get(p)))) {
p = (p + 1) & mask;
@@ -1074,7 +1070,8 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
}
}
- private final class EntrySpliterator extends
+ private final class EntrySpliterator
+ extends
Long2LongOpenHashDataMap.MapSpliterator<Consumer<? super
Long2LongMap.Entry>, Long2LongOpenHashDataMap.EntrySpliterator>
implements ObjectSpliterator<Long2LongMap.Entry> {
private static final int POST_SPLIT_CHARACTERISTICS =
@@ -1104,7 +1101,8 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
}
}
- private final class MapEntrySet extends AbstractObjectSet<Long2LongMap.Entry>
+ private final class MapEntrySet
+ extends AbstractObjectSet<Long2LongMap.Entry>
implements FastEntrySet {
@Override
public ObjectIterator<Long2LongMap.Entry> iterator() {
@@ -1126,9 +1124,7 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
return new Long2LongOpenHashDataMap.EntrySpliterator();
}
- //
@Override
-
public boolean contains(final Object o) {
if (!(o instanceof Map.Entry)) {
return false;
@@ -1383,7 +1379,8 @@ public class Long2LongOpenHashDataMap extends
AbstractLong2LongMap
* {@link java.util.ListIterator#next()}/{@link
java.util.ListIterator#previous()} methods (and
* possibly their type-specific counterparts) so that they return values
instead of entries.
*/
- private final class ValueIterator extends
Long2LongOpenHashDataMap.MapIterator<LongConsumer>
+ private final class ValueIterator
+ extends Long2LongOpenHashDataMap.MapIterator<LongConsumer>
implements LongIterator {
public ValueIterator() {
super();
diff --git
a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongPackedOpenHashDataMap.java
b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongPackedOpenHashDataMap.java
index 679f1a0f..c293213d 100644
---
a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongPackedOpenHashDataMap.java
+++
b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongPackedOpenHashDataMap.java
@@ -149,6 +149,9 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
return oldValue;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void putAll(Map<? extends Long, ? extends Long> m) {
if (f <= .5) {
@@ -191,6 +194,9 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public long put(final long k, final long v) {
final long pos = find(k);
@@ -278,8 +284,10 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
-
public long remove(final long k) {
if (((k) == 0)) {
if (containsNullKey) {
@@ -306,8 +314,10 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
-
public long get(final long k) {
if (((k) == 0)) {
return containsNullKey ? index.get(n).right() : defRetValue;
@@ -332,8 +342,10 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
-
public boolean containsKey(final long k) {
if (((k) == 0)) {
return containsNullKey;
@@ -358,6 +370,9 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public boolean containsValue(final long v) {
if (containsNullKey && ((index.get(n).right()) == (v))) {
@@ -375,7 +390,6 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
* {@inheritDoc}
*/
@Override
-
public long getOrDefault(final long k, final long defaultValue) {
if (((k) == 0)) {
return containsNullKey ? index.get(n).right() : defaultValue;
@@ -610,12 +624,12 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
return newVal;
}
- /*
+ /**
* Removes all elements from this map.
*
- * <p>To increase object reuse, this method does not change the table size.
If you want to reduce
- * the table size, you must use {@link #trim()}.
- *
+ * <p>
+ * To increase object reuse, this method does not change the table size. If
you want to reduce the
+ * table size, you must use {@link #trim()}.
*/
@Override
public void clear() {
@@ -624,19 +638,28 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
size.set(0);
containsNullKey = false;
- // TODO: Arrays.fill(key, 0);
+ index.clear();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public boolean isEmpty() {
return size.get() == 0;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public long size64() {
return size.get();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public int size() {
return (int) Math.min(size64(), Integer.MAX_VALUE);
@@ -697,7 +720,6 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
*
* @deprecated Please use the corresponding type-specific method instead.
*/
- @Deprecated
@Override
public Long getKey() {
return Long2LongPackedOpenHashDataMap.this.index.get(index).left();
@@ -708,7 +730,6 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
*
* @deprecated Please use the corresponding type-specific method instead.
*/
- @Deprecated
@Override
public Long getValue() {
return Long2LongPackedOpenHashDataMap.this.index.get(index).right();
@@ -719,7 +740,6 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
*
* @deprecated Please use the corresponding type-specific method instead.
*/
- @Deprecated
@Override
public Long setValue(final Long v) {
return setValue(v);
@@ -753,26 +773,31 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
* An iterator over a hash map.
*/
private abstract class MapIterator<ConsumerType> {
+
/**
* The index of the last entry returned, if positive or zero; initially,
{@link #n}. If
* negative, the last entry returned was that of the key of index {@code -
pos - 1} from the
* {@link #wrapped} list.
*/
long pos = n;
+
/**
* The index of the last entry that has been returned (more precisely, the
value of {@link #pos}
* if {@link #pos} is positive, or {@link Integer#MIN_VALUE} if {@link
#pos} is negative). It is
* -1 if either we did not return an entry yet, or the last returned entry
has been removed.
*/
long last = -1;
+
/**
* A downward counter measuring how many entries must still be returned.
*/
long c = size.get();
+
/**
* A boolean telling us whether we should return the entry with the null
key.
*/
boolean mustReturnNullKey =
Long2LongPackedOpenHashDataMap.this.containsNullKey;
+
/**
* A lazily allocated list containing keys of entries that have wrapped
around the table because
* of removals.
@@ -910,7 +935,7 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
// forEachRemaining inherited from MapIterator superclass.
@Override
- final void acceptOnIndex(final Consumer<? super Long2LongMap.Entry>
action, final long index) {
+ void acceptOnIndex(final Consumer<? super Long2LongMap.Entry> action,
final long index) {
action.accept(entry = new
Long2LongPackedOpenHashDataMap.MapEntry(index));
}
@@ -935,7 +960,7 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
// forEachRemaining inherited from MapIterator superclass.
@Override
- final void acceptOnIndex(final Consumer<? super Long2LongMap.Entry>
action, final long index) {
+ void acceptOnIndex(final Consumer<? super Long2LongMap.Entry> action,
final long index) {
entry.index = index;
action.accept(entry);
}
@@ -1085,12 +1110,12 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
@Override
- final void acceptOnIndex(final Consumer<? super Long2LongMap.Entry>
action, final long index) {
+ void acceptOnIndex(final Consumer<? super Long2LongMap.Entry> action,
final long index) {
action.accept(new Long2LongPackedOpenHashDataMap.MapEntry(index));
}
@Override
- final Long2LongPackedOpenHashDataMap.EntrySpliterator makeForSplit(long
pos, long max,
+ Long2LongPackedOpenHashDataMap.EntrySpliterator makeForSplit(long pos,
long max,
boolean mustReturnNull) {
return new Long2LongPackedOpenHashDataMap.EntrySpliterator(pos, max,
mustReturnNull, true);
}
@@ -1118,9 +1143,7 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
return new Long2LongPackedOpenHashDataMap.EntrySpliterator();
}
- //
@Override
-
public boolean contains(final Object o) {
if (!(o instanceof Map.Entry)) {
return false;
@@ -1159,7 +1182,6 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
@Override
-
public boolean remove(final Object o) {
if (!(o instanceof Map.Entry)) {
return false;
@@ -1273,7 +1295,7 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
// methods
// avoids the boxing/unboxing
@Override
- final void acceptOnIndex(final LongConsumer action, final long index) {
+ void acceptOnIndex(final LongConsumer action, final long index) {
action.accept(Long2LongPackedOpenHashDataMap.this.index.get(index).left());
}
@@ -1303,12 +1325,12 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
@Override
- final void acceptOnIndex(final LongConsumer action, final long index) {
+ void acceptOnIndex(final LongConsumer action, final long index) {
action.accept(Long2LongPackedOpenHashDataMap.this.index.get(index).left());
}
@Override
- final Long2LongPackedOpenHashDataMap.KeySpliterator makeForSplit(long pos,
long max,
+ Long2LongPackedOpenHashDataMap.KeySpliterator makeForSplit(long pos, long
max,
boolean mustReturnNull) {
return new Long2LongPackedOpenHashDataMap.KeySpliterator(pos, max,
mustReturnNull, true);
}
@@ -1391,7 +1413,7 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
// methods
// avoids the boxing/unboxing
@Override
- final void acceptOnIndex(final LongConsumer action, final long index) {
+ void acceptOnIndex(final LongConsumer action, final long index) {
action.accept(Long2LongPackedOpenHashDataMap.this.index.get(index).right());
}
@@ -1421,12 +1443,12 @@ public class Long2LongPackedOpenHashDataMap extends
AbstractLong2LongMap
}
@Override
- final void acceptOnIndex(final java.util.function.LongConsumer action,
final long index) {
+ void acceptOnIndex(final java.util.function.LongConsumer action, final
long index) {
action.accept(Long2LongPackedOpenHashDataMap.this.index.get(index).right());
}
@Override
- final Long2LongPackedOpenHashDataMap.ValueSpliterator makeForSplit(long
pos, long max,
+ Long2LongPackedOpenHashDataMap.ValueSpliterator makeForSplit(long pos,
long max,
boolean mustReturnNull) {
return new Long2LongPackedOpenHashDataMap.ValueSpliterator(pos, max,
mustReturnNull, true);
}
diff --git
a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2ObjectOpenHashDataMap.java
b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2ObjectOpenHashDataMap.java
index 48426625..f92c66b0 100644
---
a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2ObjectOpenHashDataMap.java
+++
b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2ObjectOpenHashDataMap.java
@@ -256,7 +256,6 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
}
@Override
-
public V remove(final long k) {
if (((k) == 0)) {
if (containsNullKey) {
@@ -284,7 +283,6 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
}
@Override
-
public V get(final long k) {
if (((k) == 0)) {
return containsNullKey ? value.get(n) : defRetValue;
@@ -310,7 +308,6 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
}
@Override
-
public boolean containsKey(final long k) {
if (((k) == 0)) {
return containsNullKey;
@@ -352,7 +349,6 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
* {@inheritDoc}
*/
@Override
-
public V getOrDefault(final long k, final V defaultValue) {
if (((k) == 0)) {
return containsNullKey ? value.get(n) : defaultValue;
@@ -394,7 +390,6 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
* {@inheritDoc}
*/
@Override
-
public boolean remove(final long k, final Object v) {
if (((k) == 0)) {
if (containsNullKey && java.util.Objects.equals(v, value.get(n))) {
@@ -583,8 +578,8 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
}
size.set(0);
containsNullKey = false;
- // TODO: Arrays.fill(key, 0);
- // TODO: Arrays.fill(value, null);
+ key.clear();
+ value.clear();
}
@Override
@@ -732,7 +727,7 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
if (--pos < 0) {
// We are just enumerating elements from the wrapped list.
last = Integer.MIN_VALUE;
- final long k = wrapped.getLong((int) -pos - 1); // TODO: check if
-pos - 1 is correct
+ final long k = wrapped.getLong((int) -pos - 1);
long p = HashCommon.mix((k)) & mask;
while (!((k) == (key.get(p)))) {
p = (p + 1) & mask;
@@ -755,7 +750,7 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
if (--pos < 0) {
// We are just enumerating elements from the wrapped list.
last = Integer.MIN_VALUE;
- final long k = wrapped.getLong((int) -pos - 1); // TODO: check if
-pos - 1 is correct
+ final long k = wrapped.getLong((int) -pos - 1);
long p = HashCommon.mix((k)) & mask;
while (!((k) == (key.get(p)))) {
p = (p + 1) & mask;
@@ -1047,7 +1042,6 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
return new EntrySpliterator();
}
- //
@Override
public boolean contains(final Object o) {
if (!(o instanceof Map.Entry)) {
@@ -1195,7 +1189,7 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
// methods
// avoids the boxing/unboxing
@Override
- final void acceptOnIndex(final java.util.function.LongConsumer action,
final long index) {
+ void acceptOnIndex(final java.util.function.LongConsumer action, final
long index) {
action.accept(key.get(index));
}
@@ -1223,12 +1217,12 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
}
@Override
- final void acceptOnIndex(final java.util.function.LongConsumer action,
final long index) {
+ void acceptOnIndex(final java.util.function.LongConsumer action, final
long index) {
action.accept(key.get(index));
}
@Override
- final KeySpliterator makeForSplit(long pos, long max, boolean
mustReturnNull) {
+ KeySpliterator makeForSplit(long pos, long max, boolean mustReturnNull) {
return new KeySpliterator(pos, max, mustReturnNull, true);
}
}
@@ -1301,6 +1295,7 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
*/
private final class ValueIterator extends MapIterator<Consumer<? super V>>
implements ObjectIterator<V> {
+
public ValueIterator() {
super();
}
@@ -1310,7 +1305,7 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
// methods
// avoids the boxing/unboxing
@Override
- final void acceptOnIndex(final Consumer<? super V> action, final long
index) {
+ void acceptOnIndex(final Consumer<? super V> action, final long index) {
action.accept(value.get(index));
}
@@ -1338,12 +1333,12 @@ public class Long2ObjectOpenHashDataMap<V> extends
AbstractLong2ObjectMap<V>
}
@Override
- final void acceptOnIndex(final Consumer<? super V> action, final long
index) {
+ void acceptOnIndex(final Consumer<? super V> action, final long index) {
action.accept(value.get(index));
}
@Override
- final ValueSpliterator makeForSplit(long pos, long max, boolean
mustReturnNull) {
+ ValueSpliterator makeForSplit(long pos, long max, boolean mustReturnNull) {
return new ValueSpliterator(pos, max, mustReturnNull, true);
}
}