Top


定義場所(file name)

hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp

名前(function name)

  template <class T> void do_oop_work(T* p) {

本体部(body)

  {- -------------------------------------------
  (1) (assert)
      ---------------------------------------- -}

        assert (!oopDesc::is_null(*p), "expected non-null ref");
        assert ((oopDesc::load_decode_heap_oop_not_null(p))->is_oop(),
                "expected an oop while scanning weak refs");

  {- -------------------------------------------
  (1) PSScavenge::copy_and_push_safe_barrier() を呼び出す.
      (ただし, ポインタが NULL だったり New 領域内を指してない場合には何もしない.
       (See: PSScavenge::should_scavenge))
      ---------------------------------------- -}

        // Weak refs may be visited more than once.
        if (PSScavenge::should_scavenge(p, _to_space)) {
          PSScavenge::copy_and_push_safe_barrier(_promotion_manager, p);
        }
      }

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