final int start = (threadOrdinal == 1) ? 1 : (threadOrdinal - 1) * chunkSize;
final int start = (threadOrdinal == 1) ? refSlotSize : (threadOrdinal - 1) * chunkSize;
  public static void scanStatics(TraceLocal trace)     throws UninterruptiblePragma, InlinePragma {    // The address of the statics table    // equivalent to VM_Statics.getSlots()    final Address slots = VM_Magic.getJTOC();    // The number of collector threads    final int numberOfCollectors = VM_CollectorThread.numCollectors();    // This thread as a collector    final VM_CollectorThread ct = VM_Magic.threadAsCollectorThread(VM_Thread.getCurrentThread());    // The number of static references    final int numberOfReferences = VM_Statics.getNumberOfReferenceSlots();    // The size to give each thread    final int chunkSize = numberOfReferences / numberOfCollectors;    // The number of this collector thread (1...n)    final int threadOrdinal = ct.getGCOrdinal();    // Start and end of statics region to be processed    final int start = (threadOrdinal == 1) ? 1 : (threadOrdinal - 1) * chunkSize;    final int end = (threadOrdinal == numberOfCollectors) ? numberOfReferences : threadOrdinal * chunkSize;    // Process region    for (int slot=start; slot < end; slot+=refSlotSize) {      Offset slotOffset = Offset.fromIntSignExtend(slot << LOG_BYTES_IN_INT);      trace.addRootLocation(slots.plus(slotOffset));    }  }