From d09752ffd17688b33a1e828cf4c11f66b86c3c3c Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sat, 16 Aug 2008 11:57:27 -0300 Subject: Introduce scm_i_marking to detect when GC mark bits are touched outside of marking stage. --- libguile/gc-mark.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'libguile/gc-mark.c') diff --git a/libguile/gc-mark.c b/libguile/gc-mark.c index 77f3ec2af..9fcf205ad 100644 --- a/libguile/gc-mark.c +++ b/libguile/gc-mark.c @@ -73,6 +73,7 @@ scm_mark_all (void) long j; int loops; + scm_i_marking = 1; scm_i_init_weak_vectors_for_gc (); scm_i_init_guardians_for_gc (); @@ -139,8 +140,6 @@ scm_mark_all (void) break; } - /* fprintf (stderr, "%d loops\n", loops); */ - /* Remove all unmarked entries from the weak vectors. */ scm_i_remove_weaks_from_weak_vectors (); @@ -148,6 +147,7 @@ scm_mark_all (void) /* Bring hashtables upto date. */ scm_i_scan_weak_hashtables (); + scm_i_marking = 0; } /* {Mark/Sweep} @@ -169,6 +169,12 @@ scm_gc_mark (SCM ptr) scm_gc_mark_dependencies (ptr); } +void +ensure_marking (void) +{ + assert (scm_i_marking); +} + /* Mark the dependencies of an object. -- cgit v1.2.3