At this point there must be enough information in the object to allow for the iterator procedure to work properly. The memory manager now goes and supplies the missing heap-pointers. I haven't used the revisor mechanism myself anywhere in the current system, but it might give you an opportunity to do some fixup work after the heap-pointers are in place. So far we have been dealing with a generic memory management system, which is not necessarily geared towards an application in a Scheme system. See the original source code for examples on how to write these procedures.
Any memory allocation can trigger the garbage collector to run.
Since it is a copying collector it will change pointers in the process. Be careful not to get the rug pulled out under your feet while allocating memory. This can lead to very subtle bugs which are hard to find. There is an abundance of examples of this throughout the code. Any uninitialized or otherwise invalid heap pointer will cause the collector to break badly.