On Wed, 9 Sep 2020 12:43:20 GMT, Aleksey Shipilev <sh...@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. > > 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`. Ah yes, my bad š¤¦āāļø ------------- PR: https://git.openjdk.java.net/jdk/pull/94