hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp
// Add the region to the LHS of the incremental cset
void G1CollectorPolicy::add_region_to_incremental_cset_lhs(HeapRegion* hr) {
{- -------------------------------------------
(1) (assert)
---------------------------------------- -}
// Survivors should be added to the RHS at the end of a pause
assert(!hr->is_survivor(), "Logic");
{- -------------------------------------------
(1)
---------------------------------------- -}
// Do the 'common' stuff
add_region_to_incremental_cset_common(hr);
{- -------------------------------------------
(1) 引数で指定された HeapRegion を _inc_cset_head フィールドのリストに追加する.
(既存の _inc_cset_head を新しい HeapRegion の _next_in_special_set フィールドにつないでいるため,
新しい HeapRegion を先頭とするリストになる.
なお, 要素数が 1個の場合には, _inc_cset_tail も新しい HeapRegion を指すように設定している.)
---------------------------------------- -}
// Add the region at the left hand side
hr->set_next_in_collection_set(_inc_cset_head);
if (_inc_cset_head == NULL) {
assert(_inc_cset_tail == NULL, "Invariant");
_inc_cset_tail = hr;
}
_inc_cset_head = hr;
{- -------------------------------------------
(1) (トレース出力)
---------------------------------------- -}
if (G1PrintHeapRegions) {
gclog_or_tty->print_cr(" added region to incremental cset (LHS) "
"%d:["PTR_FORMAT", "PTR_FORMAT"], "
"top "PTR_FORMAT", young %s",
hr->hrs_index(), hr->bottom(), hr->end(),
hr->top(), (hr->is_young()) ? "YES" : "NO");
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.