Top


定義場所(file name)

hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp

名前(function name)

inline void MarkSweep::mark_object(oop obj) {

本体部(body)

  {- -------------------------------------------
  (1) 処理対象のオブジェクトの mark フィールドを「マーク済み」のものに書き換える.
      ---------------------------------------- -}

      // some marks may contain information we need to preserve so we store them away
      // and overwrite the mark.  We'll restore it at the end of markSweep.
      markOop mark = obj->mark();
      obj->set_mark(markOopDesc::prototype()->set_marked());

  {- -------------------------------------------
  (1) もし書き換え前の mark フィールドの値が (ハッシュ値やロック状態が書き込まれているなどで) 保存しておく必要があれば, 
      MarkSweep::preserve_mark() を呼んで待避しておく.
      (See: PreservedMark)
      ---------------------------------------- -}

      if (mark->must_be_preserved(obj)) {
        preserve_mark(obj, mark);
      }
    }

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