Charles Thornton wrote:
> 1) Previous Message said:
>   --------------------------------
>  "It's calling gc_mark_children() if FL_MARK flag is set AND flag bits
>   are NOT equal to FL_MARK (other bits should be set for marking).
>   obj->flags == FL_MARK means finalizer is reserved to be called on obj."
>
>  Then why does GC_MARK
>  ---------------------------------------------------
>
>    if (obj->as.basic.flags & FL_MARK)
>    return;            /* already marked */
>    obj->as.basic.flags |= FL_MARK;
>
> The above code seems to use only FL_MARK as the
> Flag to indicate that an obj is "marked"?  If otther
> bits are used - what are they and when are they used?
>
> ==============================================
> 2) What is the purpose GC_LEVEL_MAX and the
>    parameter 'lev' also
>
> Thanks in advance for your help.
>              Chuck T.
>
>    if (lev > GC_LEVEL_MAX || (lev == 0 && ruby_stack_check())) {
>    if (!mark_stack_overflow) {
>        if (mark_stack_ptr - mark_stack < MARK_STACK_MAX) {
>        *mark_stack_ptr = ptr;
>        mark_stack_ptr++;
>        } else {
>        mark_stack_overflow = 1;
>
>