if (VM.VerifyAssertions) VM.assert(eventIndex > 0 && eventLogger.eventId[eventIndex - 1] == NETWORK_SELECT);
if (VM.VerifyAssertions) VM._assert(eventIndex > 0 && eventLogger.eventId[eventIndex - 1] == NETWORK_SELECT);
   logSelect(int threadId, int nready)      {      int            processorId = VM_Processor.getCurrentProcessorId();      VM_EventLogger eventLogger = eventLoggers[processorId - VM_Scheduler.PRIMORDIAL_PROCESSOR_ID];      int            eventIndex  = eventLogger.eventIndex;            if (eventIndex == MAX_EVENTS)         return;      if (nready < 0)         { // start of event         if (eventIndex > 0 && eventLogger.eventId[eventIndex - 1] == NETWORK_SELECT)            { // merge with preceeding event            eventIndex -= 1;            if (eventLogger.threadId[eventIndex] != threadId)               eventLogger.threadId[eventIndex] = -1; // merge thread ids            }         else            { // new event            eventLogger.timeStamp[eventIndex]   = VM_Time.now();            eventLogger.processorId[eventIndex] = processorId;            eventLogger.threadId[eventIndex]    = threadId;            eventLogger.eventId[eventIndex]     = NETWORK_SELECT;            eventLogger.eventData2[eventIndex]  = 0; // number of event repetitions            eventLogger.eventIndex += 1;            }         }      else         { // end of event         if (VM.VerifyAssertions) VM.assert(eventIndex > 0 && eventLogger.eventId[eventIndex - 1] == NETWORK_SELECT);         eventIndex -= 1;         eventLogger.eventData1[eventIndex] = nready; // number of sockets ready         eventLogger.eventData2[eventIndex] += 1;     // number of event repetitions         }      }