aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0007-ConcurrentUtil.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0007-ConcurrentUtil.patch')
-rw-r--r--patches/server/0007-ConcurrentUtil.patch27
1 files changed, 15 insertions, 12 deletions
diff --git a/patches/server/0007-ConcurrentUtil.patch b/patches/server/0007-ConcurrentUtil.patch
index 83edf8ab9d..44a4f07316 100644
--- a/patches/server/0007-ConcurrentUtil.patch
+++ b/patches/server/0007-ConcurrentUtil.patch
@@ -4111,10 +4111,10 @@ index 0000000000000000000000000000000000000000..7ffe4379b06c03c56abbcbdee3bb7208
+}
diff --git a/src/main/java/ca/spottedleaf/concurrentutil/map/ConcurrentLong2ReferenceChainedHashTable.java b/src/main/java/ca/spottedleaf/concurrentutil/map/ConcurrentLong2ReferenceChainedHashTable.java
new file mode 100644
-index 0000000000000000000000000000000000000000..6abee91e0d83c6a172e890bbda304a512cf790a1
+index 0000000000000000000000000000000000000000..d701998b376579ec652fb94823befa3cc0bc4090
--- /dev/null
+++ b/src/main/java/ca/spottedleaf/concurrentutil/map/ConcurrentLong2ReferenceChainedHashTable.java
-@@ -0,0 +1,1681 @@
+@@ -0,0 +1,1684 @@
+package ca.spottedleaf.concurrentutil.map;
+
+import ca.spottedleaf.concurrentutil.function.BiLong1Function;
@@ -4123,7 +4123,6 @@ index 0000000000000000000000000000000000000000..6abee91e0d83c6a172e890bbda304a51
+import ca.spottedleaf.concurrentutil.util.IntegerUtil;
+import ca.spottedleaf.concurrentutil.util.ThrowUtil;
+import ca.spottedleaf.concurrentutil.util.Validate;
-+
+import java.lang.invoke.VarHandle;
+import java.util.Arrays;
+import java.util.Iterator;
@@ -5573,23 +5572,27 @@ index 0000000000000000000000000000000000000000..6abee91e0d83c6a172e890bbda304a51
+ this.currentTable = null;
+ return null;
+ }
-+ final TableEntry<V>[] newTable = resizeChain.table;
-+ if (newTable == null) {
++
++ final ResizeChain<V> prevChain = resizeChain.prev;
++ this.resizeChain = prevChain;
++ if (prevChain == null) {
+ this.currentTable = null;
+ return null;
+ }
+
-+ // the increment is a multiple of table.length, so we can undo the increments on idx by taking the
-+ // mod
++ final TableEntry<V>[] newTable = prevChain.table;
++
++ // we recover the original index by modding by the new table length, as the increments applied to the index
++ // are a multiple of the new table's length
+ int newIdx = index & (newTable.length - 1);
+
-+ final ResizeChain<V> newChain = this.resizeChain = resizeChain.prev;
-+ final TableEntry<V>[] prevTable = newChain.table;
++ // the increment is always the previous table's length
++ final ResizeChain<V> nextPrevChain = prevChain.prev;
+ final int increment;
-+ if (prevTable == null) {
++ if (nextPrevChain == null) {
+ increment = 1;
+ } else {
-+ increment = prevTable.length;
++ increment = nextPrevChain.table.length;
+ }
+
+ // done with the upper table, so we can skip the resize node
@@ -5706,8 +5709,8 @@ index 0000000000000000000000000000000000000000..6abee91e0d83c6a172e890bbda304a51
+
+ protected ResizeChain(final TableEntry<V>[] table, final ResizeChain<V> prev, final ResizeChain<V> next) {
+ this.table = table;
-+ this.next = next;
+ this.prev = prev;
++ this.next = next;
+ }
+ }
+ }