hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp
inline void MarkSweep::mark_object(oop obj) {
{- -------------------------------------------
(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.