static void init() {
static void init() throws VM_PragmaInterruptible {
  static void init() {    threadCreationMutex     = new VM_ProcessorLock();    outputMutex             = new VM_ProcessorLock();    if (VM.BuildForStrongVolatileSemantics) doublewordVolatileMutex = new VM_ProcessorLock();    threads                 = new VM_Thread[MAX_THREADS];    threadAllocationIndex   = PRIMORDIAL_THREAD_INDEX;    // Enable us to dump a Java Stack from the C trap handler to aid in debugging things that     // show up as recursive use of hardware exception registers (eg the long-standing lisp bug)    VM_BootRecord.the_boot_record.dumpStackAndDieOffset = VM_Entrypoints.dumpStackAndDieMethod.getOffset();    // pre-allocate pinned stacks for later use in boot()    //    collectorThreadStacks = new int[MAX_PROCESSORS][];    for (int i = 0; i < MAX_PROCESSORS; ++i)      collectorThreadStacks[i] = VM_RuntimeStructures.newStack(STACK_SIZE_COLLECTOR);    startupThreadStacks   = new int[MAX_PROCESSORS][];    for (int i = 0; i < MAX_PROCESSORS; ++i)      startupThreadStacks[i]   = VM_RuntimeStructures.newStack(STACK_SIZE_NORMAL);    // allocate initial processor list    //    processors = new VM_Processor[1 + PRIMORDIAL_PROCESSOR_ID];    processors[PRIMORDIAL_PROCESSOR_ID] = new VM_Processor(PRIMORDIAL_PROCESSOR_ID, VM_Processor.RVM);    // allocate lock structures    //    VM_Lock.init();  }