1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

bdw-gc 6.8 compatibility (hopefully)

* configure.ac (HAVE_GC_STACK_BASE): New check.

* libguile/threads.c (GC_UNIMPLEMENTED, GC_SUCCESS): Define if needed.
  (GC_register_my_thread, GC_unregister_my_thread)
  (GC_call_with_stack_base): Define shims if needed.
This commit is contained in:
Andy Wingo 2011-03-24 20:34:31 +01:00
parent ecba00af65
commit 5f0d2951a0
2 changed files with 38 additions and 0 deletions

View file

@ -1256,6 +1256,13 @@ AC_CHECK_TYPE([GC_fn_type],
[],
[#include <gc/gc.h>])
# `GC_stack_base' is not available in GC 7.1 and earlier.
AC_CHECK_TYPE([struct GC_stack_base],
[AC_DEFINE([HAVE_GC_STACK_BASE], [1],
[Define this if the `GC_stack_base' type is available.])],
[],
[#include <gc/gc.h>])
LIBS="$save_LIBS"

View file

@ -79,6 +79,37 @@ typedef void * (* GC_fn_type) (void *);
#endif
#ifndef GC_SUCCESS
#define GC_SUCCESS 0
#endif
#ifndef GC_UNIMPLEMENTED
#define GC_UNIMPLEMENTED 3
#endif
/* Likewise struct GC_stack_base is missing before 7.1. */
#ifndef HAVE_GC_STACK_BASE
struct GC_stack_base;
static int
GC_register_my_thread (struct GC_stack_base *)
{
return GC_UNIMPLEMENTED;
}
static void
GC_unregister_my_thread ()
{
}
static void *
GC_call_with_stack_base(void * (*fn) (struct GC_stack_base*, void*), void *arg)
{
return fn (NULL, arg);
}
#endif
/* Now define with_gc_active and with_gc_inactive. */
#if (defined(HAVE_GC_DO_BLOCKING) && defined (HAVE_DECL_GC_DO_BLOCKING) && defined (HAVE_GC_CALL_WITH_GC_ACTIVE))