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 <marti...@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 <orionllm...@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 <marti...@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]); >>> >>> >>