RFR: 8335274: SwitchBootstraps.ResolvedEnumLabels.resolvedEnum should be final
Aleksey Shipilev
shade at openjdk.org
Fri Jun 28 09:36:18 UTC 2024
On Thu, 27 Jun 2024 19:30:34 GMT, Aleksey Shipilev <shade at 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
More information about the core-libs-dev
mailing list