VM.shutdown(VM.exitStatusMiscTrouble);
VM.shutdown(VM.EXIT_STATUS_MISC_TROUBLE);
  private void initiateCollection() throws UninterruptiblePragma {    /* check that scheduler initialization is complete */    if (!VM_Scheduler.allProcessorsInitialized) {      VM.sysWrite("GC required before system fully initialized");      VM.sysWriteln("Specify larger than default heapsize on command line");      VM_Scheduler.dumpStack();      VM.shutdown(VM.exitStatusMiscTrouble);    }    /* wait for preceding GC to complete */    if (verbose >= 2) {      VM.sysWrite("GC Message: VM_Handshake.initiateCollection before waiting");      VM_Scheduler.collectorQueue.dump();    }    int maxCollectorThreads = waitForPrecedingGC();    /* Acquire global lockout field inside the boot record.  Will be     * released when gc completes. */    VM_CollectorThread.gcThreadRunning = true;    /* reset counter for collector threads arriving to participate in     * the collection */    VM_CollectorThread.participantCount[0] = 0;        /* reset rendezvous counters to 0, the decision about which     * collector threads will participate has moved to the run method     * of CollectorThread */    VM_CollectorThread.gcBarrier.resetRendezvous();    /* Deque and schedule collector threads on ALL RVM Processors.     */    if (verbose >= 1)       VM.sysWriteln("GC Message: VM_Handshake.initiateCollection: scheduling collector threads");    VM_Scheduler.collectorMutex.lock();    if (VM_Scheduler.collectorQueue.length() != maxCollectorThreads)       VM.sysWriteln("GC Error: Expected ", maxCollectorThreads,                     " GC threads.   Found ",                     VM_Scheduler.collectorQueue.length());    while (VM_Scheduler.collectorQueue.length() > 0) {      VM_Thread t = VM_Scheduler.collectorQueue.dequeue();      t.scheduleHighPriority();      t.processorAffinity.requestYieldToGC();    }    VM_Scheduler.collectorMutex.unlock();  }