long j;
int loops;
+ scm_i_marking = 1;
scm_i_init_weak_vectors_for_gc ();
scm_i_init_guardians_for_gc ();
break;
}
- /* fprintf (stderr, "%d loops\n", loops); */
-
/* Remove all unmarked entries from the weak vectors.
*/
scm_i_remove_weaks_from_weak_vectors ();
/* Bring hashtables upto date.
*/
scm_i_scan_weak_hashtables ();
+ scm_i_marking = 0;
}
/* {Mark/Sweep}
scm_gc_mark_dependencies (ptr);
}
+void
+ensure_marking (void)
+{
+ assert (scm_i_marking);
+}
+
/*
Mark the dependencies of an object.
/* testing and changing GC marks */
#define SCM_GC_MARK_P(x) SCM_GC_CELL_GET_BIT (x)
+
+void ensure_marking(void);
#define SCM_SET_GC_MARK(x) SCM_GC_CELL_SET_BIT (x)
#define SCM_CLEAR_GC_MARK(x) SCM_GC_CELL_CLEAR_BIT (x)