RFR: 8247373: ArraysSupport.newLength doc, test, and exception message

Roger Riggs rriggs at openjdk.java.net
Mon Dec 7 16:08:13 UTC 2020


On Sat, 5 Dec 2020 02:37:55 GMT, Stuart Marks <smarks at openjdk.org> wrote:

>> Is there a reason the code would not naturally work when either min or preferred is zero?
>> Why are their preconditions?  What do they allow?
>> These methods are used in enough places that a slip in any of the clients would be trouble and hard to track down.
>
> The origin of this code is in collections like ArrayList that have an existing array (hence oldLength >= 0) and that need it to grow (hence minGrowth > 0). Those were the prevailing assumptions in the code from which this was derived, so they turn into preconditions here. I don't see the need to try to make this handle any more cases than it currently does. Doing so complicates the analysis and possibly the code as well. Certainly a bug in a caller might be difficult to track down, but I don't want to add argument checking or to provide "reasonable" behavior in the face of unreasonable inputs. This is an internal method; bugs in callers should be fixed.

The algorithm can be well defined for minGrowth and prefGrowth == 0 without extra checks or exceptions with a careful look at the inequality checks.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1617


More information about the core-libs-dev mailing list