collectionInitiated = true;
  public final boolean poll (boolean mustCollect, MemoryResource mr)     throws VM_PragmaLogicallyUninterruptible {    if (gcInProgress || !initialized || mr == metaDataMR) return false;    mustCollect |= stressTestGCRequired();    boolean heapFull = getPagesReserved() > getTotalPages();    boolean nurseryFull = nurseryMR.reservedPages() > Options.maxNurseryPages;    if (mustCollect || heapFull || nurseryFull) {      required = mr.reservedPages() - mr.committedPages();      if (mr == nurseryMR || (Plan.copyMature && (mr == matureMR)))	required = required<<1;  // must account for copy reserve      int nurseryYield = ((int)((float) nurseryMR.committedPages() * SURVIVAL_ESTIMATE))<<1;      fullHeapGC = mustCollect || (nurseryYield < required) || fullHeapGC;      VM_Interface.triggerCollection(VM_Interface.RESOURCE_TRIGGERED_GC);      return true;    }    return false;  }