From: Ivan Maidanski Date: Mon, 28 Dec 2015 17:24:33 +0000 (+0300) Subject: Fix undefined PTRFREE/NORMAL in gc_inline.h X-Git-Tag: gc7_4_4~54 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=14a4be9788c15496c36fcb6762683d7df4833a80;p=gc Fix undefined PTRFREE/NORMAL in gc_inline.h Allow to use gc_inline.h public header without include gc_priv.h. * include/gc_inline.h (GC_I_PTRFREE, GC_I_NORMAL): New macro. * include/gc_inline.h (GC_FAST_MALLOC_GRANS, GC_MALLOC_WORDS, GC_MALLOC_ATOMIC_WORDS, GC_CONS): Use GC_I_PTRFREE and GC_I_NORMAL instead of PTRFREE and NORMAL (private macros), respectively. --- diff --git a/include/gc_inline.h b/include/gc_inline.h index 5c49e0e5..db1b2718 100644 --- a/include/gc_inline.h +++ b/include/gc_inline.h @@ -46,6 +46,10 @@ # define GC_PREFETCH_FOR_WRITE(x) (void)0 #endif +/* Object kinds; must match PTRFREE, NORMAL in gc_priv.h. */ +#define GC_I_PTRFREE 0 +#define GC_I_NORMAL 1 + /* Store a pointer to a list of newly allocated objects of kind k and */ /* size lb in *result. The caller must make sure that *result is */ /* traced even if objects are ptrfree. */ @@ -89,7 +93,8 @@ GC_API void GC_CALL GC_generic_malloc_many(size_t /* lb */, int /* k */, init; \ GC_PREFETCH_FOR_WRITE(next); \ GC_ASSERT(GC_size(result) >= (granules)*GC_GRANULE_BYTES); \ - GC_ASSERT((kind) == PTRFREE || ((GC_word *)result)[1] == 0); \ + GC_ASSERT((kind) == GC_I_PTRFREE \ + || ((GC_word *)result)[1] == 0); \ break; \ } \ /* Entry contains counter or NULL */ \ @@ -126,16 +131,16 @@ GC_API void GC_CALL GC_generic_malloc_many(size_t /* lb */, int /* k */, # define GC_MALLOC_WORDS(result,n,tiny_fl) \ do { \ size_t grans = GC_WORDS_TO_WHOLE_GRANULES(n); \ - GC_FAST_MALLOC_GRANS(result, grans, tiny_fl, 0, \ - NORMAL, GC_malloc(grans*GC_GRANULE_BYTES), \ + GC_FAST_MALLOC_GRANS(result, grans, tiny_fl, 0, GC_I_NORMAL, \ + GC_malloc(grans * GC_GRANULE_BYTES), \ *(void **)(result) = 0); \ } while (0) # define GC_MALLOC_ATOMIC_WORDS(result,n,tiny_fl) \ do { \ size_t grans = GC_WORDS_TO_WHOLE_GRANULES(n); \ - GC_FAST_MALLOC_GRANS(result, grans, tiny_fl, 0, \ - PTRFREE, GC_malloc_atomic(grans*GC_GRANULE_BYTES), \ + GC_FAST_MALLOC_GRANS(result, grans, tiny_fl, 0, GC_I_PTRFREE, \ + GC_malloc_atomic(grans * GC_GRANULE_BYTES), \ (void)0 /* no initialization */); \ } while (0) @@ -143,8 +148,8 @@ GC_API void GC_CALL GC_generic_malloc_many(size_t /* lb */, int /* k */, # define GC_CONS(result, first, second, tiny_fl) \ do { \ size_t grans = GC_WORDS_TO_WHOLE_GRANULES(2); \ - GC_FAST_MALLOC_GRANS(result, grans, tiny_fl, 0, \ - NORMAL, GC_malloc(grans*GC_GRANULE_BYTES), \ + GC_FAST_MALLOC_GRANS(result, grans, tiny_fl, 0, GC_I_NORMAL, \ + GC_malloc(grans * GC_GRANULE_BYTES), \ *(void **)(result) = (void *)(first)); \ ((void **)(result))[1] = (void *)(second); \ } while (0)