On Fri, 11 Feb 2022 17:10:43 GMT, XenoAmess <d...@openjdk.java.net> wrote:
>> 8281631: HashMap.putAll can cause redundant space waste > > XenoAmess has updated the pull request incrementally with one additional > commit since the last revision: > > 9072610: HashMap.putAll can cause redundant space waste > > FWIW, (int) Math.ceil(expected / 0.75) and (int) ((expected * 4L + 2L) / > > 3L) would be equivalent. > > No, they are not equivalent. If `expected` exceeds a certain value around > 1.6bn, then the intermediate result using the second expression will be > greater than Integer.MAX_VALUE. Casting this to `int` can result in a > negative number. > > FWIW, (int) Math.ceil(expected / 0.75) and (int) ((expected * 4L + 2L) / > > 3L) would be equivalent. that is exactly why we added this check when it can reach such situation. if (size > (int) (Integer.MAX_VALUE * 0.75)) { return Integer.MAX_VALUE; } ------------- PR: https://git.openjdk.java.net/jdk/pull/7431