}
  public void run() { // overrides VM_Thread    VM_Processor myProcessor = VM_Processor.getCurrentProcessor();    if (VM.VerifyAssertions) VM.assert(myProcessor.processorMode != VM_Processor.NATIVEDAEMON);   main: while (true) {      if (VM.BuildForEventLogging && VM.EventLoggingEnabled) VM_EventLogger.logIdleEvent();      if (VM_Scheduler.terminated) VM_Thread.terminate();      for (double t=VM_Time.now()+SPIN_TIME; VM_Time.now()<t;) {	if (!VM.BuildForConcurrentGC) VM_Processor.idleProcessor = myProcessor;	if (availableWork(myProcessor)) {	  VM_Thread.yield(VM_Processor.getCurrentProcessor().idleQueue);	  continue main;	}      }      VM.sysVirtualProcessorYield();    }