private static unsafe Thread CollectBody(Thread currentThread, int generation) { // NOTE: Refrain from creating any GC safe points in this // method. That includes allocation and system calls, // which in turn includes print statements. Putting a GC // safe point before the call to the collector may cause // infinite recursion. Putting a GC safe point after the // call to the collector may cause recursion when other // threads are triggering collections before the current // thread exits this method. (Bjarne) int currentThreadIndex = currentThread.threadIndex; installedGC.CollectStoppable(currentThreadIndex, generation); return(Thread.threadTable[currentThreadIndex]); }