RFR(S): 8153637: MethodHandles.countedLoop/3 initialises loop counter to 1 instead of 0

Claes Redestad claes.redestad at oracle.com
Mon Apr 11 11:28:23 UTC 2016

On 2016-04-11 11:17, Paul Sandoz wrote:
>> 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.
> Paul.


Seeing no discernible impact on the performance of the current 
implementation, either.


More information about the core-libs-dev mailing list