(a cherry-pick of commit
420a4768 from 'release-7_6')
Issue #260 (bdwgc).
* mark.c [!(THREADS && MPROTECT_VDB)]
(GC_push_all_stack): Call GC_push_all_eager() instead of GC_push_all()
if GC_mark_stack_top is rather close to GC_mark_stack_limit.
# if defined(THREADS) && defined(MPROTECT_VDB)
GC_push_all_eager(bottom, top);
# else
- if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) {
+ if (!NEED_FIXUP_POINTER && GC_all_interior_pointers
+ && (word)GC_mark_stack_top
+ < (word)(GC_mark_stack_limit - INITIAL_MARK_STACK_SIZE/8)) {
GC_push_all(bottom, top);
} else {
GC_push_all_eager(bottom, top);