On Thu, 11 Mar 2021 19:13:47 GMT, Aleksey Shipilev <sh...@openjdk.org> wrote:
> SonarCloud reports multiple incorrect double-checked locking cases in > `sun.java2d.CRenderer`. For example: > > > Arc2D arcToShape; > > ... > if (arcToShape == null) { > synchronized (this) { > if (arcToShape == null) { > arcToShape = new Arc2D.Float(); > } > } > } > > > `Arc2D` contains fields that are not `final`. `arcToShape` is not `volatile`. > This makes it an incorrect DCL. > This code is used by Mac OS, do it would probably blow up some time later on > M1. > > This is the candidate fix that preserves the semantics. I am doing this fix > blindly so far, without testing on real Mac OS. But maybe there is no need to > do any of this, because the setter methods overwrite the contents of all > these objects under their own sync. So, maybe we can just allocate those > objects without DCL-backed caching and pass them in? This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.java.net/jdk/pull/2948