diff options
Diffstat (limited to 'mark_rts.c')
-rw-r--r-- | mark_rts.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -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); |