summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Gran <spk121@yahoo.com>2011-03-29 21:25:04 -0700
committerAndy Wingo <wingo@pobox.com>2011-03-30 09:21:09 +0200
commit4000d0641f8a2282a9c52eea33ad91c76625d906 (patch)
tree08be2aeadb46218d662e1da1dcf3ff43e99b27fe
parent443f25dcff49f0a920d4149e29bcb3ae9f64ee02 (diff)
downloadguile-4000d0641f8a2282a9c52eea33ad91c76625d906.tar.gz
check for GC_allow_register_threads
This is not present in earlier versions of BDW-GC * configure.ac: check for GC_allow_register_threads * libguile/threads.c (scm_i_init_thread_for_guile): Only call GC_allow_register_threads if it is present.
-rw-r--r--configure.ac2
-rw-r--r--libguile/threads.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index e5b83798a..4fc25536b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1238,7 +1238,7 @@ save_LIBS="$LIBS"
LIBS="$BDW_GC_LIBS $LIBS"
CFLAGS="$BDW_GC_CFLAGS $CFLAGS"
-AC_CHECK_FUNCS([GC_do_blocking GC_call_with_gc_active GC_pthread_exit GC_pthread_cancel])
+AC_CHECK_FUNCS([GC_do_blocking GC_call_with_gc_active GC_pthread_exit GC_pthread_cancel GC_allow_register_threads])
# Though the `GC_do_blocking ()' symbol is present in GC 7.1, it is not
# declared, and has a different type (returning void instead of
diff --git a/libguile/threads.c b/libguile/threads.c
index ad5bbe19f..8dc3414dc 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -772,8 +772,10 @@ scm_i_init_thread_for_guile (struct GC_stack_base *base, SCM parent)
*/
scm_i_init_guile (base);
+#ifdef HAVE_GC_ALLOW_REGISTER_THREADS
/* Allow other threads to come in later. */
GC_allow_register_threads ();
+#endif
scm_i_pthread_mutex_unlock (&scm_i_init_mutex);
}