On Thu, 27 Jun 2024 19:30:34 GMT, Aleksey Shipilev <sh...@openjdk.org> wrote:
> I was auditing the current uses of `@Stable` before relaxing its barriers > ([JDK-8333791](https://bugs.openjdk.org/browse/JDK-8333791)), and this is an > easy spot. > > `resolvedEnum` is not `final`. So technically publishing the object via data > race can show `resolvedEnum` as `null`, which would break `test()` that does > not expect it. Currently not a practical problem since its safety is covered > by adjacent `final` fields, but should be more precise. > FWIW, there are more `@Stable` uses here: #19906 > if you would have a moment to check that, it may be helpful. Thanks. That one looks fine: it is set outside of constructor, is intrinsically racy, and it has AFAICS the recovery paths when we read `null` out of `MappedEnumCache.generatedSwitch` or `MappedEnumCache.constantsMap`. ------------- PR Comment: https://git.openjdk.org/jdk/pull/19933#issuecomment-2196506663