On Tue, 28 Feb 2023 09:04:21 GMT, ExE Boss <d...@openjdk.org> wrote: >> Viktor Klang has updated the pull request with a new target base due to a >> merge or a rebase. The pull request now contains three commits: >> >> - Updating copyright header of ForEachOps.java and removing unnecessary >> suppression of an unchecked cast. >> - Write the initial value of the next reference without using the VarHandle >> - JDK-8302666: Replace CHM with VarHandle in ForeachOrderedTask > > src/java.base/share/classes/java/util/stream/ForEachOps.java line 513: > >> 511: // of right subtree (if any, which can be this task's right >> sibling) >> 512: // >> 513: var leftDescendant = (ForEachOrderedTask<S, >> T>)NEXT.getAndSet(this, null); > > Casting the `null` is required for the resolved method descriptor to be > `(ForEachOrderedTask, ForEachOrderedTask)ForEachOrderedTask` instead of > `(ForEachOrderedTask, Object)ForEachOrderedTask`, which prevents unnecessary > type conversion `LambdaForm`s from being introduced and allows > [`VarHandle::withInvokeExactBehavior`] to be used: > Suggestion: > > var leftDescendant = (ForEachOrderedTask<S, T>) > NEXT.getAndSet(this, (ForEachOrderedTask<S, T>) null); > > > [`VarHandle::withInvokeExactBehavior`]: > https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/invoke/VarHandle.html#withInvokeExactBehavior()
@ExE-Boss Ah, sorry, it was meant to be there. :) ------------- PR: https://git.openjdk.org/jdk/pull/12320