--- jsr166/src/jdk8/java/util/HashMap.java 2017/09/26 16:49:58 1.1 +++ jsr166/src/jdk8/java/util/HashMap.java 2017/09/26 16:58:06 1.3 @@ -2038,8 +2038,11 @@ public class HashMap extends Abstra return; if (root.parent != null) root = root.root(); - if (root == null || root.right == null || - (rl = root.left) == null || rl.left == null) { + if (root == null + || (movable + && (root.right == null + || (rl = root.left) == null + || rl.left == null))) { tab[index] = first.untreeify(map); // too small return; } @@ -2268,7 +2271,7 @@ public class HashMap extends Abstra static TreeNode balanceDeletion(TreeNode root, TreeNode x) { - for (TreeNode xp, xpl, xpr;;) { + for (TreeNode xp, xpl, xpr;;) { if (x == null || x == root) return root; else if ((xp = x.parent) == null) {