Use TLS when available for `SCM_I_CURRENT_THREAD'.
authorLudovic Courtès <ludo@gnu.org>
Fri, 2 Oct 2009 14:32:34 +0000 (16:32 +0200)
committerLudovic Courtès <ludo@gnu.org>
Fri, 9 Oct 2009 12:10:05 +0000 (14:10 +0200)
commit705edb959b3093cb1cbe1390110d96ee833b63fc
tree2f1157be12074243695c7179ac0be432de6c3527
parent46935a1fac58e50276f7e7e49e5fa6bab53c0848
Use TLS when available for `SCM_I_CURRENT_THREAD'.

* acinclude.m4 (GUILE_THREAD_LOCAL_STORAGE): New macro.

* configure.ac: Use it.

* libguile/__scm.h (SCM_THREAD_LOCAL): New macro.

* libguile/gen-scmconfig.c (main): Define `SCM_HAVE_THREAD_STORAGE_CLASS'.

* libguile/gen-scmconfig.h.in (SCM_I_GSC_HAVE_THREAD_STORAGE_CLASS):
  New.

* libguile/threads.c
  (scm_i_current_thread)[SCM_HAVE_THREAD_STORAGE_CLASS]: New.
  (SET_CURRENT_THREAD): New macro.
  (guilify_self_1, on_thread_exit, init_thread_key): Use it.

* libguile/threads.h
  (scm_i_current_thread)[SCM_HAVE_THREAD_STORAGE_CLASS]: New
  declaration.
  (SCM_I_CURRENT_THREAD)[SCM_HAVE_THREAD_STORAGE_CLASS]: New macro.
  (init_thread_key_once, init_thread_key): Conditionalize on
  `!defined SCM_HAVE_THREAD_STORAGE_CLASS'.
  (scm_i_init_thread_for_guile): Update accordingly.
acinclude.m4
configure.ac
libguile/__scm.h
libguile/gen-scmconfig.c
libguile/gen-scmconfig.h.in
libguile/threads.c
libguile/threads.h