Commit | Line | Data |
---|---|---|
1c44468d LC |
1 | #ifndef SCM_BDW_GC_H |
2 | #define SCM_BDW_GC_H | |
e7bca227 | 3 | |
aef1fcf9 | 4 | /* Copyright (C) 2006, 2008, 2009, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. |
e7bca227 LC |
5 | * |
6 | * This library is free software; you can redistribute it and/or | |
1c44468d LC |
7 | * modify it under the terms of the GNU Lesser General Public License |
8 | * as published by the Free Software Foundation; either version 3 of | |
9 | * the License, or (at your option) any later version. | |
e7bca227 | 10 | * |
1c44468d LC |
11 | * This library is distributed in the hope that it will be useful, but |
12 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
e7bca227 LC |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | * Lesser General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU Lesser General Public | |
17 | * License along with this library; if not, write to the Free Software | |
1c44468d LC |
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
19 | * 02110-1301 USA | |
e7bca227 LC |
20 | */ |
21 | ||
22 | /* Correct header inclusion. */ | |
23 | ||
aec3d99b | 24 | #include "libguile/scmconfig.h" |
e7bca227 | 25 | |
950a966e | 26 | #if SCM_USE_PTHREAD_THREADS |
e7bca227 LC |
27 | |
28 | /* When pthreads are used, let `libgc' know about it and redirect allocation | |
29 | calls such as `GC_MALLOC ()' to (contention-free, faster) thread-local | |
30 | allocation. */ | |
31 | ||
32 | # define GC_THREADS 1 | |
33 | # define GC_REDIRECT_TO_LOCAL 1 | |
34 | ||
12c1d861 AW |
35 | /* Don't #define pthread routines to their GC_pthread counterparts. |
36 | Instead we will be careful inside Guile to use the GC_pthread | |
37 | routines. */ | |
38 | # define GC_NO_THREAD_REDIRECTS 1 | |
39 | ||
eac7a5d0 AW |
40 | #ifdef __MINGW32__ |
41 | /* Rely on pthreads-w32. */ | |
42 | #define GC_WIN32_PTHREADS | |
43 | #endif | |
44 | ||
e7bca227 LC |
45 | #endif |
46 | ||
47 | #include <gc/gc.h> | |
ebd78213 | 48 | |
dbe4d258 | 49 | /* Return true if PTR points to the heap. */ |
475461b7 LC |
50 | #define SCM_I_IS_POINTER_TO_THE_HEAP(ptr) \ |
51 | (GC_base (ptr) != NULL) | |
dbe4d258 LC |
52 | |
53 | /* Register a disappearing link for the object pointed to by OBJ such that | |
54 | the pointer pointed to be LINK is cleared when OBJ is reclaimed. Do so | |
55 | only if OBJ actually points to the heap. See | |
56 | http://thread.gmane.org/gmane.comp.programming.garbage-collection.boehmgc/2563 | |
57 | for details. */ | |
58 | #define SCM_I_REGISTER_DISAPPEARING_LINK(link, obj) \ | |
59 | ((SCM_I_IS_POINTER_TO_THE_HEAP (obj)) \ | |
60 | ? GC_GENERAL_REGISTER_DISAPPEARING_LINK ((link), (obj)) \ | |
61 | : 0) | |
62 | ||
63 | ||
1c44468d | 64 | #endif /* SCM_BDW_GC_H */ |