Top


定義場所(file name)

hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp

名前(function name)

  template <class T> void deal_with_reference(T* ref_to_scan) {

本体部(body)

  {- -------------------------------------------
  (1) 処理対象に応じて以下のどちらかを呼び出す.
        * 処理対象が, 処理が pending されているポインタ配列の場合:
          G1ParScanPartialArrayClosure::do_oop_nv()  (_partial_scan_cl フィールドに格納しているクロージャーを使用)
        * それ以外の場合:
          G1ParScanHeapEvacClosure::do_oop_nv()      (_evac_cl フィールドに格納しているクロージャーを使用)
      ---------------------------------------- -}

        if (has_partial_array_mask(ref_to_scan)) {
          _partial_scan_cl->do_oop_nv(ref_to_scan);
        } else {
          // Note: we can use "raw" versions of "region_containing" because
          // "obj_to_scan" is definitely in the heap, and is not in a
          // humongous region.
          HeapRegion* r = _g1h->heap_region_containing_raw(ref_to_scan);
          _evac_cl->set_region(r);
          _evac_cl->do_oop_nv(ref_to_scan);
        }
      }

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.