Top


定義場所(file name)

hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp

名前(function name)

inline bool
PSParallelCompact::dead_space_crosses_boundary(const RegionData* region,
                                               idx_t bit)
{

本体部(body)

  {- -------------------------------------------
  (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.