1) Why is there a SOURCE_FILENAME Hash Table in GC?
     What is the underlying GC Operation that needs to know
      source filenames?

2) I assume that "gc_mark_all()" code below means that
    you only call  "gc_mark_children" if  an object is NOT
   Marked already?   This seems to run counter to what I
   expected.  I would think that only the children of a marked
   object should be marked??

      while (p < pend) {
        if ((p->as.basic.flags & FL_MARK)
        && (p->as.basic.flags != FL_MARK)) {
          gc_mark_children((VALUE) p, 0);
          }
        p++;
       }

3) I assume that "gc_mark_rest()" copies the <mark_stack> to
    a temporary stack to process it, and init's the mark_stack to
    receive more entries from the mark rest processing?

   Chuck T.