RFR: JDK-8302666: Replace CHM with VarHandle in ForeachOrderedTask [v2]

ExE Boss duke at openjdk.org
Sat Feb 18 02:43:26 UTC 2023


On Fri, 17 Feb 2023 11:39:21 GMT, Viktor Klang <duke at openjdk.org> wrote:

>> I noticed when looking at the code that there was no real need to use a CHM to perform the tracking of activation in an ordered fashion on ForEachOrderedTask, but instead a VarHandle can be used, reducing allocations and indirection.
>
> Viktor Klang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Write the initial value of the next reference without using the VarHandle

src/java.base/share/classes/java/util/stream/ForEachOps.java line 515:

> 513:             //
> 514:             @SuppressWarnings("unchecked")
> 515:             var leftDescendant = (ForEachOrderedTask<S, T>)NEXT.getAndSet(this, null);

I don’t think that this needs a `@SuppressWarnings("unchecked")`, as casts of signature polymorphic return values don’t emit unchecked warnings (unless that changed recently):
Suggestion:

            var leftDescendant = (ForEachOrderedTask<S, T>) NEXT.getAndSet(this, (ForEachOrderedTask<S, T>) null);

-------------

PR: https://git.openjdk.org/jdk/pull/12320


More information about the core-libs-dev mailing list