From e57a587216a7b7af718bac874d1b902754909e8a Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Mon, 10 Jan 2011 17:16:11 +0900 Subject: [PATCH] Can conservatively preserve only one type of value for debugging. --- gc.c | 3 +++ include/chibi/features.h | 4 ++++ 2 files changed, 7 insertions(+) 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