RFR: 8142334: Improve lazy initialization of java.lang.invoke
Paul Sandoz
paul.sandoz at oracle.com
Thu Nov 12 13:47:28 UTC 2015
> On 11 Nov 2015, at 15:32, Claes Redestad <claes.redestad at oracle.com> wrote:
>
> Paul,
>
> On 2015-11-10 11:55, Paul Sandoz wrote:
>> DirectMethodHandle
>> —
>> 682 private static @Stable NamedFunction[] FUNCTIONS = new NamedFunction[NF_LIMIT];
>>
>> Invokers
>> —
>> 442 private static @Stable NamedFunction[] FUNCTIONS = new NamedFunction[NF_LIMIT];
>>
>> MethodHandleImpl
>> —
>> 1627 private static @Stable NamedFunction[] FUNCTIONS = new NamedFunction[NF_LIMIT];
>>
>>
>> To be complete you could add “final”, thus it makes it clear that @Stable refers specifically to the array element.
>>
>> Paul.
>
> Thanks for having a look and catching this:
>
> http://cr.openjdk.java.net/~redestad/8142334/webrev.03
>
> - added final keyword to FUNCTIONS and HANDLES
> - added @Stable to ARRAYS, FILL_ARRAYS, and FILL_ARRAY_TO_RIGHT
>
MethodHandleImpl.java
—
1413 private static final @Stable MethodHandle[] FILL_ARRAYS = new MethodHandle[FILL_ARRAYS_COUNT + 1];
1414
1415 private static MethodHandle getFillArray(int count) {
1416 assert (count > 0 && count <= FILL_ARRAYS_COUNT);
Why FILL_ARRAYS_COUNT + 1 rather than FILL_ARRAYS_COUNT?
Based on the previous code I would have expected the bounds to be:
0 < count < FILL_ARRAYS_COUNT
Paul.
More information about the core-libs-dev
mailing list