if (SSGCspy.hi) {
if ((event == SSGCspy.BEFORE_COLLECTION && !SSGCspy.hi) || (event != SSGCspy.BEFORE_COLLECTION && SSGCspy.hi)) {
  private void gcspyGatherData(int event) {    // Port = 0 means no gcspy    if (GCspy.getGCspyPort() == 0)      return;    if (ServerInterpreter.shouldTransmit(event)) {      ServerInterpreter.startCompensationTimer();      // -- Handle the semispace collector --      // BEFORE_COLLECTION: hi has not yet been flipped by globalPrepare()      // SEMISPACE_COPIED:  hi has been flipped      // AFTER_COLLECTION:  hi has been flipped      CopySpace scannedSpace = null;      CopySpace otherSpace = null;      ContiguousSpaceDriver driver = null;      ContiguousSpaceDriver otherDriver = null;      /*      if (hi) Log.write("\nExamining Highspace (", event);      else    Log.write("\nExamining Lowspace (", event);      Log.write(")");      reportSpaces();      */      if (SSGCspy.hi) {        scannedSpace = SSGCspy.copySpace1;        otherSpace = SSGCspy.copySpace0;        driver = SSGCspy.ss1Driver;        otherDriver = SSGCspy.ss0Driver;      } else {        scannedSpace = SSGCspy.copySpace0;        otherSpace = SSGCspy.copySpace1;        driver = SSGCspy.ss0Driver;        otherDriver = SSGCspy.ss1Driver;      }      gcspyGatherData(driver, scannedSpace, ss);      if (event == SSGCspy.AFTER_COLLECTION) {        otherDriver.zero();        // FIXME As far as I can see, release() only resets a CopySpace's        // cursor (and optionally zeroes or mprotects the pages); it doesn't        // make them available to other spaces.        // If it does release pages then need to change        // ContiguousSpaceDriver.setRange        Address start = otherSpace.getStart();        otherDriver.setRange(start, start);      }      // -- Handle the LargeObjectSpace --      SSGCspy.losDriver.zero();      los.gcspyGatherData(event, SSGCspy.losDriver, false); // read fromspace      if (event == SSGCspy.SEMISPACE_COPIED)        los.gcspyGatherData(event, SSGCspy.losDriver, true);  // read tospace      // -- Handle the immortal space --      SSGCspy.immortalDriver.zero();      gcspyGatherData(SSGCspy.immortalDriver, SSGCspy.immortalSpace, immortal);      // Transmit the data      ServerInterpreter.stopCompensationTimer();      driver.finish(event);      if (event == SSGCspy.AFTER_COLLECTION) otherDriver.finish(event);      SSGCspy.immortalDriver.finish(event);      SSGCspy.losDriver.finish(event);    } else {      //Log.write("not transmitting...");    }    ServerInterpreter.serverSafepoint(event);  }