On Tue, 13 Jun 2023 20:42:49 GMT, Man Cao <m...@openjdk.org> wrote:

>> Hi all,
>> 
>> Could anyone review this small fix for a data race in 
>> java.io.ClassCache$CacheRef? This fix makes the code safer by making the 
>> code data-race-free.
>
> Man Cao has updated the pull request incrementally with one additional commit 
> since the last revision:
> 
>   Switch to using volatile instead of AtomicReference

Unfortunately, even the single `volatile` on that fast path seems to cost quite 
a bit :(

On M1:


# CONF=macosx-aarch64-server-release make images test 
TEST=micro:java.io.ObjectStreamClasses

Benchmark                       Mode  Cnt    Score   Error  Units

# Before
ObjectStreamClasses.testLookup  avgt    8  106,946 ± 0,691  ns/op

# After
ObjectStreamClasses.testLookup  avgt    8  119,984 ± 0,588  ns/op


So again, this looks like a benign data race, and we are penalizing the 
serialization a bit even with the lightweight fix. This is only to make TSAN 
happy, right? If so, I would rather keep the code as is.

There are plenty of benign data races in JDK, we should be able to somehow tell 
TSAN which are actually fine.

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

PR Comment: https://git.openjdk.org/jdk/pull/14386#issuecomment-1590869101

Reply via email to