Top


定義場所(file name)

hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

名前(function name)

void G1CollectedHeap::update_sets_after_freeing_regions(size_t pre_used,
                                       FreeRegionList* free_list,
                                       HumongousRegionSet* humongous_proxy_set,
                                       bool par) {

本体部(body)

  {- -------------------------------------------
  (1) 
      ---------------------------------------- -}

      if (pre_used > 0) {
        Mutex* lock = (par) ? ParGCRareEvent_lock : NULL;
        MutexLockerEx x(lock, Mutex::_no_safepoint_check_flag);
        assert(_summary_bytes_used >= pre_used,
               err_msg("invariant: _summary_bytes_used: "SIZE_FORMAT" "
                       "should be >= pre_used: "SIZE_FORMAT,
                       _summary_bytes_used, pre_used));
        _summary_bytes_used -= pre_used;
      }
      if (free_list != NULL && !free_list->is_empty()) {
        MutexLockerEx x(FreeList_lock, Mutex::_no_safepoint_check_flag);
        _free_list.add_as_head(free_list);
      }
      if (humongous_proxy_set != NULL && !humongous_proxy_set->is_empty()) {
        MutexLockerEx x(OldSets_lock, Mutex::_no_safepoint_check_flag);
        _humongous_set.update_from_proxy(humongous_proxy_set);
      }
    }

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.