ActivePlan.flushRememberedSets();
  public static void computeAllRoots(TraceLocal trace) {    boolean processCodeLocations = MM_Interface.MOVES_OBJECTS;     /* scan statics */    ScanStatics.scanStatics(trace);     /* scan all threads */    while (true) {      int threadIndex = threadCounter.increment();      if (threadIndex > VM_Scheduler.threadHighWatermark) break;            VM_Thread thread = VM_Scheduler.threads[threadIndex];      if (thread == null) continue;            /* scan the thread (stack etc.) */      ScanThread.scanThread(thread, trace, processCodeLocations);      /* identify this thread as a root */      trace.addRootLocation(VM_Magic.objectAsAddress(VM_Scheduler.threads).plus(threadIndex<<LOG_BYTES_IN_ADDRESS));    }    Collection.rendezvous(4200);  }