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