hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp
inline bool
PSParallelCompact::dead_space_crosses_boundary(const RegionData* region,
idx_t bit)
{
{- -------------------------------------------
(1) (assert)
---------------------------------------- -}
assert(bit > 0, "cannot call this for the first bit/region");
assert(_summary_data.region_to_addr(region) == _mark_bitmap.bit_to_addr(bit),
"sanity check");
{- -------------------------------------------
(1) 以下の条件が全て満たされる場合,
dead space が境界をまたがっているということなので, true をリターンする.
(そうでない場合は false をリターンする)
* 対象の region が partial object を持たない
(partial object があれば, そのオブジェクトが境界をまたいでいるので,
境界をまたいでいるのは live オブジェクトということになる)
* 境界の直後の位置(bit)の beg_bits の bit が立っていない
* 境界の直前の位置(bit-1)の end_bits の bit が立っていない
---------------------------------------- -}
// Dead space crosses the boundary if (1) a partial object does not extend
// onto the region, (2) an object does not start at the beginning of the
// region, and (3) an object does not end at the end of the prior region.
return region->partial_obj_size() == 0 &&
!_mark_bitmap.is_obj_beg(bit) &&
!_mark_bitmap.is_obj_end(bit - 1);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.