* if the mark stack overflows.
*/
-#if NEED_FIXUP_POINTER
+#ifdef NEED_FIXUP_POINTER
/* Try both the raw version and the fixed up one. */
# define GC_PUSH_ONE_STACK(p, source) \
do { \
#endif
#if defined(FIXUP_POINTER)
-# define NEED_FIXUP_POINTER 1
+# define NEED_FIXUP_POINTER
#else
-# define NEED_FIXUP_POINTER 0
# define FIXUP_POINTER(p)
#endif
# if defined(THREADS) && defined(MPROTECT_VDB)
GC_push_all_eager(bottom, top);
# else
- if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) {
- GC_push_all(bottom, top);
- } else {
+# ifndef NEED_FIXUP_POINTER
+ if (GC_all_interior_pointers) {
+ GC_push_all(bottom, top);
+ } else
+# endif
+ /* else */ {
GC_push_all_eager(bottom, top);
}
# endif
STATIC void GC_push_all_stack_partially_eager(ptr_t bottom, ptr_t top,
ptr_t cold_gc_frame)
{
- if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) {
+#ifndef NEED_FIXUP_POINTER
+ if (GC_all_interior_pointers) {
/* Push the hot end of the stack eagerly, so that register values */
/* saved inside GC frames are marked before they disappear. */
/* The rest of the marking can be deferred until later. */
GC_push_all(bottom, cold_gc_frame + sizeof(ptr_t));
GC_push_all_eager(cold_gc_frame, top);
# endif /* STACK_GROWS_UP */
- } else {
+ } else
+#endif
+ /* else */ {
GC_push_all_eager(bottom, top);
}
# ifdef TRACE_BUF