(#Under Construction)
-> BarrierSet::write_ref_field_pre()
-> Barrier Set 種別や GC アルゴリズム, 変更対象等に応じて以下のどれかを行う.
* Barrier Set の種別が CardTableModRef の場合:
* GC アルゴリズムが G1GC の場合:
-> G1SATBCardTableModRefBS::inline_write_ref_field_pre()
-> G1SATBCardTableModRefBS::write_ref_field_pre_static()
-> G1SATBCardTableModRefBS::enqueue()
-> PtrQueue::enqueue()
-> (同上)
* GC アルゴリズムがそれ以外の場合:
-> CardTableModRefBS::inline_write_ref_field_pre()
* CardTableModRef ではない場合:
* GC アルゴリズムが G1GC の場合:
* 変更対象が oop* の場合:
-> G1SATBCardTableModRefBS::write_ref_field_pre_work(oop* field, oop new_val)
-> G1SATBCardTableModRefBS::inline_write_ref_field_pre()()
-> (同上)
* 変更対象が narrowOop* の場合:
-> G1SATBCardTableModRefBS::write_ref_field_pre_work(narrowOop* field, oop new_val)
-> G1SATBCardTableModRefBS::inline_write_ref_field_pre()()
-> (同上)
* GC アルゴリズムがそれ以外の場合:
* 変更対象が oop* の場合:
-> BarrierSet::write_ref_field_pre_work(oop* field, oop new_val)
* 変更対象が narrowOop* の場合:
-> BarrierSet::write_ref_field_pre_work(narrowOop* field, oop new_val)
-> BarrierSet::write_ref_field()
-> Barrier Set 種別や GC アルゴリズム, 変更対象等に応じて以下のどれかを行う.
* Barrier Set の種別が CardTableModRef の場合:
-> CardTableModRefBS::inline_write_ref_field()
* CardTableModRef ではない場合:
* GC アルゴリズムが G1GC の場合:
-> G1SATBCardTableLoggingModRefBS::write_ref_field_work()
-> PtrQueue::enqueue()
* GC アルゴリズムがそれ以外の場合:
-> CardTableModRefBS::write_ref_field_work()
-> CardTableModRefBS::inline_write_ref_field()
(#Under Construction)
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.