# define GC_BUILD
#endif
-#if (defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)) \
- && !defined(_GNU_SOURCE)
+#if defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)
/* Can't test LINUX, since this must be defined before other includes. */
-# define _GNU_SOURCE
-#endif
+# if !defined(__native_client__)
+# include <features.h>
+# endif
+# ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+# endif
+#endif /* __linux__ */
#if (defined(DGUX) && defined(GC_THREADS) || defined(DGUX386_THREADS) \
|| defined(GC_DGUX386_THREADS)) && !defined(_USING_POSIX4A_DRAFT10)
#ifdef USE_MARK_BYTES
# define mark_bit_from_hdr(hhdr,n) ((hhdr)->hb_marks[n])
-# define set_mark_bit_from_hdr(hhdr,n) ((hhdr)->hb_marks[n] = 1)
-# define clear_mark_bit_from_hdr(hhdr,n) ((hhdr)->hb_marks[n] = 0)
+# define set_mark_bit_from_hdr(hhdr,n) ((hhdr)->hb_marks[n]) = 1
+# define clear_mark_bit_from_hdr(hhdr,n) ((hhdr)->hb_marks[n]) = 0
#else /* !USE_MARK_BYTES */
-# define mark_bit_from_hdr(hhdr,n) \
- (((hhdr)->hb_marks[divWORDSZ(n)] >> (modWORDSZ(n))) & (word)1)
+# define mark_bit_from_hdr(hhdr,n) (((hhdr)->hb_marks[divWORDSZ(n)] \
+ >> (modWORDSZ(n))) & (word)1)
# define set_mark_bit_from_hdr(hhdr,n) \
- OR_WORD((hhdr)->hb_marks+divWORDSZ(n), (word)1 << modWORDSZ(n))
-# define clear_mark_bit_from_hdr(hhdr,n) \
- ((hhdr)->hb_marks[divWORDSZ(n)] &= ~((word)1 << modWORDSZ(n)))
+ OR_WORD((hhdr)->hb_marks+divWORDSZ(n), \
+ (word)1 << modWORDSZ(n))
+# define clear_mark_bit_from_hdr(hhdr,n) (hhdr)->hb_marks[divWORDSZ(n)] \
+ &= ~((word)1 << modWORDSZ(n))
#endif /* !USE_MARK_BYTES */
#ifdef MARK_BIT_PER_OBJ
# define MARK_BIT_OFFSET(sz) BYTES_TO_GRANULES(sz)
# define IF_PER_OBJ(x)
# define FINAL_MARK_BIT(sz) \
- ((sz) > MAXOBJBYTES ? MARK_BITS_PER_HBLK \
- : BYTES_TO_GRANULES((sz) * HBLK_OBJS(sz)))
+ ((sz) > MAXOBJBYTES? MARK_BITS_PER_HBLK \
+ : BYTES_TO_GRANULES((sz) * HBLK_OBJS(sz)))
#endif
/* Important internal collector routines */
/* Misc GC: */
GC_INNER GC_bool GC_expand_hp_inner(word n);
-GC_INNER void GC_start_reclaim(GC_bool abort_if_found);
+GC_INNER void GC_start_reclaim(int abort_if_found);
/* Restore unmarked objects to free */
/* lists, or (if abort_if_found is */
/* TRUE) report them. */