So we're going to support some vtable operations for GC support.
We currently have mark, and we're going to have collect.

Is there a plan to make a freed method for when pmc header gets put back
onto the free list? (This would require we call this method on all pmc's
before moving anything to the freelist, in case of dependancies between
pmcs and buffers)

We need to define what they are, and are not allowed to do.
As a general catch-all, we can say that no memory allocation or
deallocation may occur during any of these routines, although we should be
able to get more specific.

Perhaps:

mark: can't modify memory in any way aside from calling mark_used and
buffer_lives. (Otherwise, we could adjust pointers in something which was
already marked).

collect: not sure what the goal of collect is....to handle copying of your
memory data, in case you need to fixup pointers? What are the limitations
here? I'm going to say: no new headers or allocation of memory. (This
could cause stuff to be allocated in the old pool that doesn't get copied
over to the new one.)

destruct: Can do anything you want. We'll need to either increase our
DOD_block_level since it isn't re-entrant, but I don't think that's a big
problem. We can probably increment it before freeing all the
buffers, and decrement it when we're done.

How do these sound?

Thanks,
Mike Lambert

Reply via email to