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

Tagir Valeev amaembo at gmail.com
Thu Dec 13 05:33:44 UTC 2018


Hello, Zheka!

I'm not sure whether it's possible to commit a patch which is
partially contributed by another person. Probably you should submit it
separately? Also for complete patch a testcase would be necessary.

With best regards,
Tagir Valeev.
On Thu, Dec 13, 2018 at 11:48 AM Zheka Kozlov <orionllmain at gmail.com> wrote:
>
> 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