RFR(S): 8153637: MethodHandles.countedLoop/3 initialises loop counter to 1 instead of 0
paul.sandoz at oracle.com
Mon Apr 11 09:17:25 UTC 2016
> On 11 Apr 2016, at 10:36, Michael Haupt <michael.haupt at oracle.com> wrote:
> Dear all,
> please review this change.
> Bug: https://bugs.openjdk.java.net/browse/JDK-8153637
> Webrev: http://cr.openjdk.java.net/~mhaupt/8153637/webrev.00/
> The countedLoop implementation currently initialises the loop counter to the start value and, because this takes place in the very first loop clause, increments it immediately, leading to start+1 being passed to the first body invocation. The solution passes counter-1 to body. Alternatives that were considered include initialising the counter to start-1 (possible counting range is diminished), and to reorder loop clauses to move counter increment to the end of the loop (requires argument permutation).
This seems like a pragmatic compromise, and there is still wiggle room to change the implementation to something else.
More information about the core-libs-dev