Top


定義場所(file name)

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

説明(description)

// Add the region to the LHS of the incremental cset

名前(function name)

void G1CollectorPolicy::add_region_to_incremental_cset_lhs(HeapRegion* hr) {

本体部(body)

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