gcFullHeap |= mustCollect || (nurseryYield < required);
nextGCFullHeap |= mustCollect || (nurseryYield < required);
  public final boolean poll(boolean mustCollect, Space space)      throws LogicallyUninterruptiblePragma {    if (getCollectionsInitiated() > 0 || !isInitialized())      return false;    mustCollect |= stressTestGCRequired();    boolean heapFull = getPagesReserved() > getTotalPages();    boolean nurseryFull = nurserySpace.reservedPages() >                          Options.nurserySize.getMaxNursery();    boolean metaDataFull = metaDataSpace.reservedPages() >                           META_DATA_FULL_THRESHOLD;    if (mustCollect || heapFull || nurseryFull || metaDataFull) {      if (space == metaDataSpace) {        /* In general we must not trigger a GC on metadata allocation since          * this is not, in general, in a GC safe point.  Instead we initiate         * an asynchronous GC, which will occur at the next safe point.         */        setAwaitingCollection();        return false;      }      required = space.reservedPages() - space.committedPages();      if (space == nurserySpace ||          (copyMature() && (space == activeMatureSpace())))        required = required << 1; // must account for copy reserve      int nurseryYield = ((int)(nurserySpace.committedPages() *                          SURVIVAL_ESTIMATE))<<1;      gcFullHeap |= mustCollect || (nurseryYield < required);      Collection.triggerCollection(Collection.RESOURCE_GC_TRIGGER);      return true;    }    return false;  }