I don't see why it would cost any thing to make the loop that checks if the GC has to run again would cost any thing. It is all after we have decided that we are going to do a GC, so we can save all the actual machine registers in a fixed location, call the GC, make sure we got what we want and then reload the registers. All of this code can be in one place, right?