RFR: 8261445: Use memory_order_relaxed for os::random().

Aleksey Shipilev shade at openjdk.java.net
Tue Feb 9 18:26:40 UTC 2021


On Tue, 9 Feb 2021 14:49:12 GMT, Andrew Haley <aph at openjdk.org> wrote:

> os::random() is used a lot (once for every class) during HotSpot initialization, and it defaults to using a compare-and-swap operation with memory_order_conservative. We don't need that: it should be memory_order_relaxed.

It seems superficially fine, given unsynchronized read of `_rand_seed` prior to that. But I have to wonder if in absence of any memory ordering semantics, this loop is guaranteed to terminate? That is, can't a sufficiently hostile optimizer reduce it to the CAS loop that always expects a constant "oldval" seed?

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

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


More information about the hotspot-runtime-dev mailing list