hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
void G1CollectedHeap::update_sets_after_freeing_regions(size_t pre_used,
FreeRegionList* free_list,
HumongousRegionSet* humongous_proxy_set,
bool par) {
{- -------------------------------------------
(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.