if (VM.VerifyAssertions) VM._assert(Plan.willNotMove(VM_Magic.objectAsAddress(thread.jniEnv)));
  public static void preCopyGCInstances() {    /* pre-copy all thread objects in parallel */    if (rendezvous(4201) == 1) /* one thread forwards the threads object */      ScanObject.enumeratePointers(VM_Scheduler.threads, preCopyEnum);    rendezvous(4202);    while (true) {      int threadIndex = threadCounter.increment();      if (threadIndex >= VM_Scheduler.threads.length) break;      VM_Thread thread = VM_Scheduler.threads[threadIndex];      if (thread != null) { 	ScanObject.enumeratePointers(thread, preCopyEnum); 	ScanObject.enumeratePointers(thread.contextRegisters, preCopyEnum); 	ScanObject.enumeratePointers(thread.hardwareExceptionRegisters, preCopyEnum); 	if (thread.jniEnv != null) { 	  if (VM.VerifyAssertions)	    VM._assert(Plan.willNotMove(VM_Magic.objectAsAddress(thread.jniEnv))); 	  ScanObject.enumeratePointers(thread.jniEnv, preCopyEnum); 	}      }    }        rendezvous(4203);  }