if (VM_CollectorThread.RENDEZVOUS_TIMES) VM_CollectorThread.gcBarrier.rendezvousStartTime = VM_Time.now();
if (VM_CollectorThread.MEASURE_RENDEZVOUS_TIMES) VM_CollectorThread.gcBarrier.rendezvousStartTime = VM_Time.now();
    requestAndAwaitCompletion()    {	synchronized (this)	    {		VM_Allocator.gc_collect_now = false;		if (this.completionFlag)		    {			if (trace) VM_Scheduler.trace("VM_RCHandshake", "mutator: no need for collection (already completed)");			return;		    }				if (this.requestFlag)		    {			if (trace) VM_Scheduler.trace("VM_RCHandshake", "mutator: no need to initiate collection (request already in progress)");			return;		    }				if (VM_Allocator.gcInProgress)		    {			if (trace) VM_Scheduler.trace("VM_RCHandshake", "mutator: no need to initiate collection (gc already in progress)");			return;		    }				if (trace) VM_Scheduler.trace("VM_RCHandshake", "mutator: initiating collection");		if (VM_CollectorThread.RENDEZVOUS_TIMES) VM_CollectorThread.gcBarrier.rendezvousStartTime = VM_Time.now();		this.requestFlag = true;		VM_Allocator.gcInProgress = true;		initiateCollection();	    }		// allow a gc thread to run	//	if (VM_Processor.getCurrentProcessor().id == VM_Scheduler.PRIMORDIAL_PROCESSOR_ID)	    {		VM_Thread.getCurrentThread().yield();	    }	else 	    {		VM.sysVirtualProcessorYield();	    }    }