JDK 21 | JDK 22 |
---|---|
21.0.3Fixed | 22 b25Fixed |
Blocks :
|
|
Blocks :
|
|
Duplicate :
|
|
Relates :
|
GCC defines __sync* built-ins as legacy implementations of atomic support routines, and recommends using __atomic* built-ins in new code: https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html The crucial difference between these two families of built-ins is that __atomic* 64-bit CAS is guaranteed to be supported ("The ‘__atomic’ builtins can be used with any integral scalar or pointer type that is 1, 2, 4, or 8 bytes in length"), whereas __sync* 64-bit CAS can be unimplemented. This is important for making sure JDK-8316961 works on all platforms, and allows JDK-8318776 to proceed. Upstream reports suggest PPC32 is one of the platforms that does not have __sync_val_compare_and_swap_8 implemented. My own testing shows these platforms have the __sync_val_compare_and_swap_8 unimplemented: zero-fastdebug-mipsel-linux-gnu-10 zero-fastdebug-m68k-linux-gnu-10 zero-fastdebug-powerpc-linux-gnu-10 zero-fastdebug-sh4-linux-gnu-10
|