RFR: 8230877: Rename THREAD_LOCAL_DECL to thread_local
david.holmes at oracle.com
Wed Sep 11 23:46:18 UTC 2019
On 12/09/2019 9:34 am, Kim Barrett wrote:
>> On Sep 11, 2019, at 6:58 PM, David Holmes <david.holmes at oracle.com> wrote:
>> Hi Per,
>> So if I read this right, the renaming will cause the C++11 thread_local to be used always on Windows (due to our use of VS 2017) but for Solaris Studio and gcc it will only be enabled if we explicitly ask for C++11 support - is that right?
>> I see Windows Visual Studio and Solaris Studio clearly state the equivalence of the two mechanisms. I'm expecting gcc is the same, but I don't see that clearly stated.
> Well, bleh! Thanks for making me look into that...
:) If it wasn't for the unconditional use of thread_local in Visual
Studio I wouldn't have dived deeper either.
> The release notes for gcc4.8  (where thread_local support was added)
> describes an important performance difference between thread_local and
> __thread, and mentions a compiler option to remove that difference under
> some circumstances. It also suggests that because of this, one may want to
> stick with __thread where it's still applicable. (An initializer for a
> __thread variable must be a constant expression. )
> The gcc9.2 manual  (latest) describes the relevant option
> (-fno-extern-tls-init). Maybe we can use that, but it puts some non-standard
> (and well hidden) restrictions on our use of thread_local, which somewhat
> defeats the point.
>  https://gcc.gnu.org/gcc-4.8/changes.html
>  https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/C_002b_002b-Dialect-Options.html#index-fextern-tls-init
>  https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Thread-Local.html#Thread-Local
> Retracting my "Looks good”. Fooey!
But as we are not actually enabling this as we don't turn on C++11,
surely this still "looks good" enough? But we will have to look closer
at things before turning it on? We may need to clarify our own rules for
using thread-locals if we find there is a performance hit and we want to
use the magic flag.
More information about the hotspot-dev