From 7ddb9baf80744f0ea4810c35b465d96f48338750 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 9 Sep 2008 23:08:16 -0300 Subject: Cleanup mark-during-GC debug checks. * libguile/__scm.h (SCM_DEBUG): add SCM_DEBUG_MARKING_API * libguile/gc.h (SCM_SET_GC_MARK): depending on SCM_DEBUG_MARKING_API crash if someone is touching markbits outside regular hours. Rename ensure_marking() to scm_i_ensure_marking(). * libguile/inline.h (scm_double_cell, scm_cell): only set mark bits for debugging if SCM_DEBUG_MARKING_API is unset * libguile/gc-mark.c: Issue deprecation warning if we are marking outside of the GC mark phase. --- libguile/gc-mark.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libguile/gc-mark.c') diff --git a/libguile/gc-mark.c b/libguile/gc-mark.c index d72caf1ac..c334c1075 100644 --- a/libguile/gc-mark.c +++ b/libguile/gc-mark.c @@ -165,12 +165,19 @@ scm_gc_mark (SCM ptr) if (SCM_GC_MARK_P (ptr)) return; + if (!scm_i_marking) + { + static const char msg[] + = "Should only call scm_gc_mark() during GC."; + scm_c_issue_deprecation_warning (msg); + } + SCM_SET_GC_MARK (ptr); scm_gc_mark_dependencies (ptr); } void -ensure_marking (void) +scm_i_ensure_marking (void) { assert (scm_i_marking); } -- cgit v1.2.3