if (this != getCurrentProcessor() || t.isGCThread) {
if (this != getCurrentProcessor() || t.isGCThread || (t.beingDispatched && t != VM_Thread.getCurrentThread())) {
  private void transferThread (VM_Thread t) {    if (this != getCurrentProcessor() || t.isGCThread) {      transferMutex.lock();      transferQueue.enqueue(t);      transferMutex.unlock();    } else if (t.isIdleThread) {      idleQueue.enqueue(t);    } else {      //      if (VM.VerifyAssertions) VM.assert(t.beingDispatched == false || t == VM_Thread.getCurrentThread()); // local queue: no other dispatcher should be running on thread's stack      if (t.beingDispatched && t != VM_Thread.getCurrentThread()) {	VM_Scheduler.trace("VM_Processor", "getRunnableThread: readyQueue BUG", t.getIndex());	VM.sysWrite("current thread: ");	VM_Thread.getCurrentThread().dump();	VM.sysWrite("offending thread: ");	t.dump();	VM.assert(this == getCurrentProcessor());	VM_Scheduler.dumpVirtualMachine();	VM.sysExit(555);      }      readyQueue.enqueue(t);    }  }