summaryrefslogtreecommitdiff
path: root/mark_rts.c
diff options
context:
space:
mode:
Diffstat (limited to 'mark_rts.c')
-rw-r--r--mark_rts.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/mark_rts.c b/mark_rts.c
index 6a576681..3a115508 100644
--- a/mark_rts.c
+++ b/mark_rts.c
@@ -615,22 +615,27 @@ GC_API void GC_CALL GC_exclude_static_roots(void *b, void *e)
UNLOCK();
}
+#ifdef NO_VDB_FOR_STATIC_ROOTS
+# define GC_PUSH_CONDITIONAL_STATIC(b, t, all) \
+ ((void)(all), GC_push_all(b, t))
+#else
+# define GC_PUSH_CONDITIONAL_STATIC(b, t, all) GC_push_conditional(b, t, all)
+ /* Do either of GC_push_all or GC_push_selected */
+ /* depending on the third arg. */
+#endif
+
#if defined(WRAP_MARK_SOME) && defined(PARALLEL_MARK)
# define GC_PUSH_CONDITIONAL(b, t, all) \
(GC_parallel \
? GC_push_conditional_eager(b, t, all) \
- : GC_push_conditional(b, t, all))
-#elif defined(GC_DISABLE_INCREMENTAL)
-# define GC_PUSH_CONDITIONAL(b, t, all) GC_push_all(b, t)
+ : GC_PUSH_CONDITIONAL_STATIC(b, t, all))
#else
-# define GC_PUSH_CONDITIONAL(b, t, all) GC_push_conditional(b, t, all)
- /* Do either of GC_push_all or GC_push_selected */
- /* depending on the third arg. */
+# define GC_PUSH_CONDITIONAL(b, t, all) GC_PUSH_CONDITIONAL_STATIC(b, t, all)
#endif
/* Invoke push_conditional on ranges that are not excluded. */
STATIC void GC_push_conditional_with_exclusions(ptr_t bottom, ptr_t top,
- GC_bool all GC_ATTR_UNUSED)
+ GC_bool all)
{
while ((word)bottom < (word)top) {
struct exclusion *next = GC_next_exclusion(bottom);