diff --git a/gc.c b/gc.c index e5c7821f..3934a6c9 100644 --- a/gc.c +++ b/gc.c @@ -111,6 +111,9 @@ void sexp_conservative_mark (sexp ctx) { fprintf(stderr, "GC MISS: %p: %s\n", p, sexp_pointer_source(p)); fflush(stderr); } +#endif +#if SEXP_USE_CONSERVATIVE_GC_PRESERVE_TAG + if (sexp_pointer_tag(p) == SEXP_USE_CONSERVATIVE_GC_PRESERVE_TAG) #endif sexp_mark(ctx, p); } diff --git a/include/chibi/features.h b/include/chibi/features.h index 02e42ddf..ad3d06eb 100644 --- a/include/chibi/features.h +++ b/include/chibi/features.h @@ -309,6 +309,10 @@ #define SEXP_USE_CONSERVATIVE_GC SEXP_USE_DEBUG_GC > 1 #endif +#ifndef SEXP_USE_CONSERVATIVE_GC_PRESERVE_TAG +#define SEXP_USE_CONSERVATIVE_GC_PRESERVE_TAG 0 +#endif + #ifndef SEXP_USE_TRACK_ALLOC_SOURCE #define SEXP_USE_TRACK_ALLOC_SOURCE SEXP_USE_DEBUG_GC > 1 #endif