The first thing I need to know is what is 'lev' used for?

   It  appears to be a marker for avoiding something
happening while gc_mark_children uses gc_mark
in reentrant manner?

  Secondly, it appears that if  'lev' exceeds it max OR
lev == 0 AND the Stack overflows --  you push  the
ptr being marked onto a mark_statck!

Is the mark stack being used to save mark data when
the normal processing of marks gets to deep?

Any help in understanding the inner working of gc_mark
and friends would be very helpful.

        Chuck T.
        ceo / hawthorne-press.com