--- jsr166/src/main/java/util/HashMap.java 2018/05/22 16:16:57 1.5
+++ jsr166/src/main/java/util/HashMap.java 2018/11/11 16:27:28 1.9
@@ -34,7 +34,7 @@ import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
-import jdk.internal.misc.SharedSecrets;
+// OPENJDK import jdk.internal.access.SharedSecrets;
/**
* Hash table based implementation of the {@code Map} interface. This
@@ -118,7 +118,7 @@ import jdk.internal.misc.SharedSecrets;
* should be used only to detect bugs.
*
*
This class is a member of the
- *
+ *
* Java Collections Framework.
*
* @param the type of keys maintained by this map
@@ -1263,9 +1263,7 @@ public class HashMap extends Abstra
@Override
public V merge(K key, V value,
BiFunction super V, ? super V, ? extends V> remappingFunction) {
- if (value == null)
- throw new NullPointerException();
- if (remappingFunction == null)
+ if (value == null || remappingFunction == null)
throw new NullPointerException();
int hash = hash(key);
Node[] tab; Node first; int n, i;
@@ -1308,8 +1306,7 @@ public class HashMap extends Abstra
else
removeNode(hash, key, null, false, true);
return v;
- }
- if (value != null) {
+ } else {
if (t != null)
t.putTreeVal(this, tab, hash, key, value);
else {
@@ -1320,8 +1317,8 @@ public class HashMap extends Abstra
++modCount;
++size;
afterNodeInsertion(true);
+ return value;
}
- return value;
}
@Override
@@ -1447,7 +1444,7 @@ public class HashMap extends Abstra
// Check Map.Entry[].class since it's the nearest public type to
// what we're actually creating.
- SharedSecrets.getJavaObjectInputStreamAccess().checkArray(s, Map.Entry[].class, cap);
+ jsr166.Platform.checkArray(s, Map.Entry[].class, cap);
@SuppressWarnings({"rawtypes","unchecked"})
Node[] tab = (Node[])new Node[cap];
table = tab;
@@ -2148,7 +2145,7 @@ public class HashMap extends Abstra
if (replacement != p) {
TreeNode pp = replacement.parent = p.parent;
if (pp == null)
- root = replacement;
+ (root = replacement).red = false;
else if (p == pp.left)
pp.left = replacement;
else