On Wed, 9 Sep 2020 12:35:06 GMT, Galder Zamarreño 
<github.com+50187+gald...@openjdk.org> wrote:

> * Release fence guarantees that cacheArray field will published with a 
> non-null value.
> * Without this fix, CacheValueMap.cacheArray can sometimes be seen as null.
> 
> This is a follow up to @PaulSandoz's feedback
> [here](https://mail.openjdk.java.net/pipermail/core-libs-dev/2020-August/068248.html)
>  for the first attempt to fix
> [JDK-8251397](https://bugs.openjdk.java.net/browse/JDK-8251397).  In this 
> update, the fence has been moved to
> `initializeMap()` and added Paul's suggested comment.
> Annotating `classValueMap` with `@Stable` is outside the scope of this issue.

I believe current patch is incorrect.

Marked as reviewed by shade (Reviewer).

src/java.base/share/classes/java/lang/ClassValue.java line 386:

> 384:                 // since stores to the fields of ClassValueMap will not 
> be reordered
> 385:                 // to occur after the store to the field 
> type.classValueMap
> 386:                 UNSAFE.storeFence();

Wait a second, how's that supposed to work? The `storeFence` should be between 
the end of `new ClassValueMap()` and the
store to `classValueMap`.

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

Changes requested by shade (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/94

Reply via email to