RFR(s): JDK-8214687 Optimize Collections.nCopies().hashCode()

Zheka Kozlov orionllmain at gmail.com
Thu Dec 13 04:48:35 UTC 2018


OK, this is a fixed version:

@Override
public void forEach(Consumer<? super E> action) {
    Objects.requireNonNull(action);
    final int n = this.n;
    final E e = this.element;
    for (int i = 0; i < n; i++) {
        action.accept(e);
    }
}

Tagir, can you add this to your patch? I signed the OCA.


ср, 12 дек. 2018 г. в 11:25, Martin Buchholz <martinrb at google.com>:

> I used to believe that,  but apparently I was wrong.
> https://openjdk.markmail.org/thread/rfqfultw35i2az45
>
> On Tue, Dec 11, 2018 at 8:14 PM Zheka Kozlov <orionllmain at gmail.com>
> wrote:
>
>> Would be better to add @Stable to the fields instead? (`n` and `element`
>> are final, so @Stable is OK here)
>>
>> ср, 12 дек. 2018 г. в 11:02, Martin Buchholz <martinrb at google.com>:
>>
>>> In performance critical code, we don't trust hotspot to not reload final
>>>> fields.  Other forEach methods do this, e.g.
>>>
>>>
>>>         final Object[] es = queue;
>>>         for (int i = 0, n = size; i < n; i++)
>>>             action.accept((E) es[i]);
>>>
>>>
>>


More information about the core-libs-dev mailing list