Noa Resare c1a8a83
diff -ur guava-18.0.vanilla/guava/src/com/google/common/collect/Maps.java guava-18.0/guava/src/com/google/common/collect/Maps.java
Noa Resare c1a8a83
--- guava-18.0.vanilla/guava/src/com/google/common/collect/Maps.java	2014-08-25 18:39:22.000000000 +0000
Noa Resare c1a8a83
+++ guava-18.0/guava/src/com/google/common/collect/Maps.java	2015-06-03 21:02:12.498000000 +0000
Noa Resare c1a8a83
@@ -206,11 +206,15 @@
Noa Resare c1a8a83
       return expectedSize + 1;
Noa Resare c1a8a83
     }
Noa Resare c1a8a83
     if (expectedSize < Ints.MAX_POWER_OF_TWO) {
Noa Resare c1a8a83
-      return expectedSize + expectedSize / 3;
Noa Resare c1a8a83
+      // This is the calculation used in JDK8 to resize when a putAll
Noa Resare c1a8a83
+      // happens; it seems to be the most conservative calculation we
Noa Resare c1a8a83
+      // can make.  0.75 is the default load factor.
Noa Resare c1a8a83
+      return (int) ((float) expectedSize / 0.75F + 1.0F);
Noa Resare c1a8a83
     }
Noa Resare c1a8a83
     return Integer.MAX_VALUE; // any large value
Noa Resare c1a8a83
   }
Noa Resare c1a8a83
 
Noa Resare c1a8a83
+
Noa Resare c1a8a83
   /**
Noa Resare c1a8a83
    * Creates a mutable {@code HashMap} instance with the same mappings as
Noa Resare c1a8a83
    * the specified map.
Noa Resare c1a8a83
diff -ur guava-18.0.vanilla/guava-tests/test/com/google/common/collect/MapsTest.java guava-18.0/guava-tests/test/com/google/common/collect/MapsTest.java
Noa Resare c1a8a83
--- guava-18.0.vanilla/guava-tests/test/com/google/common/collect/MapsTest.java	2014-08-25 18:39:22.000000000 +0000
Noa Resare c1a8a83
+++ guava-18.0/guava-tests/test/com/google/common/collect/MapsTest.java	2015-06-03 21:04:15.463000000 +0000
Noa Resare c1a8a83
@@ -156,7 +156,8 @@
Noa Resare c1a8a83
     Field tableField = HashMap.class.getDeclaredField("table");
Noa Resare c1a8a83
     tableField.setAccessible(true);
Noa Resare c1a8a83
     Object[] table = (Object[]) tableField.get(hashMap);
Noa Resare c1a8a83
-    return table.length;
Noa Resare c1a8a83
+    // In JDK8, table is set lazily, so it may be null.
Noa Resare c1a8a83
+    return table == null ? 0 : table.length;
Noa Resare c1a8a83
   }
Noa Resare c1a8a83
 
Noa Resare c1a8a83
   public void testCapacityForLargeSizes() {