if (VM.VerifyAssertions) VM.assert(color(object) == GRAY || ! isZeroReferenceCount(object));
if (VM.VerifyAssertions) VM._assert(color(object) == GRAY || ! isZeroReferenceCount(object));
    public final void markGray() {	if (VM.VerifyAssertions) VM.assert(! ASYNC);	for (VM_RootBuffer buf = this; buf != null; buf = buf.next) {	    final int bufEntries = buf.entries;	    if (bufEntries > 0) {		final int[] bufRoots = buf.roots;		// Subtract counts due to internal pointers, coloring objects gray as we go		// VM.sysWrite("* Mark Gray\n");		for (int i = 0; i < bufEntries; i++) {		    VM_Address object = VM_Address.fromInt(bufRoots[i]);		    // dumpRefcountInfo("Mark gray ", object);		    if (VM.VerifyAssertions) VM.assert(color(object) == GRAY || ! isZeroReferenceCount(object));		    int g = VM_GrayVisitor.grayVisited; // debug		    		    if (color(object) != GRAY) {			// if (VM_Processor.getCurrentProcessor().localEpoch > 0) dumpRefcountInfo("Root for gray: ", object);			grayVisitor.markGray(object);			if (CC_COUNT_EVENTS) tracedRoots++;		    }		    else if (VOID_EXTRA_ROOTS) {			clearBufferedFlag(VM_Address.fromInt(bufRoots[i]));			bufRoots[i] = VOIDED_ROOT.toInt(); // flag already found			if (CC_COUNT_EVENTS) voidedRoots++;		    }		    debugCycles(bufRoots, i, g);		    if (trace1) VM.sysWrite("|");		}	    }	}