RFR: 8247373: ArraysSupport.newLength doc, test, and exception message [v2]
Roger Riggs
rriggs at openjdk.java.net
Tue Dec 8 15:20:16 UTC 2020
On Tue, 8 Dec 2020 00:48:55 GMT, Stuart Marks <smarks at openjdk.org> wrote:
>> The algorithm can be well defined for minGrowth and prefGrowth == 0 without extra checks or exceptions with a careful look at the inequality checks.
>> For example, as currently coded, if both are zero, it returns SOFT_MAX_ARRAY_LENGTH.
>> Changing the `0 < prefLength` to `0 <= prefLength` would return minGrowth and avoid a very large but unintentional allocation.
>
> That's only true if oldLength is zero. The behavior is different if oldLength is positive. In any case, this method is called when the array needs to **grow**, which means the caller needs to reallocate and copy. If the caller passes zero for both minGrowth and prefGrowth, the caller doesn't need to reallocate and copy, and there's no point in it calling this method in the first place.
Not calling for a zero value is usually an optimization, not a necessity to work around an inconsistency or unpredictability in the API or the range of arguments it accepts.
-------------
PR: https://git.openjdk.java.net/jdk/pull/1617
More information about the core-libs-dev
mailing list