< prev index next >

src/hotspot/share/gc/parallel/psCardTable.cpp

Print this page

        

*** 29,38 **** --- 29,39 ---- #include "gc/parallel/psCardTable.hpp" #include "gc/parallel/psPromotionManager.inline.hpp" #include "gc/parallel/psScavenge.hpp" #include "gc/parallel/psTasks.hpp" #include "gc/parallel/psYoungGen.hpp" + #include "oops/access.inline.hpp" #include "oops/oop.inline.hpp" #include "runtime/prefetch.inline.hpp" #include "utilities/align.hpp" // Checks an individual oop for missing precise marks. Mark
*** 43,53 **** PSCardTable* _card_table; HeapWord* _unmarked_addr; protected: template <class T> void do_oop_work(T* p) { ! oop obj = oopDesc::load_decode_heap_oop(p); if (_young_gen->is_in_reserved(obj) && !_card_table->addr_is_marked_imprecise(p)) { // Don't overwrite the first missing card mark if (_unmarked_addr == NULL) { _unmarked_addr = (HeapWord*)p; --- 44,54 ---- PSCardTable* _card_table; HeapWord* _unmarked_addr; protected: template <class T> void do_oop_work(T* p) { ! oop obj = RawAccess<>::oop_load(p); if (_young_gen->is_in_reserved(obj) && !_card_table->addr_is_marked_imprecise(p)) { // Don't overwrite the first missing card mark if (_unmarked_addr == NULL) { _unmarked_addr = (HeapWord*)p;
*** 100,110 **** PSYoungGen* _young_gen; PSCardTable* _card_table; protected: template <class T> void do_oop_work(T* p) { ! oop obj = oopDesc::load_decode_heap_oop_not_null(p); if (_young_gen->is_in_reserved(obj)) { assert(_card_table->addr_is_marked_precise(p), "Found unmarked precise oop"); _card_table->set_card_newgen(p); } } --- 101,111 ---- PSYoungGen* _young_gen; PSCardTable* _card_table; protected: template <class T> void do_oop_work(T* p) { ! oop obj = RawAccess<OOP_NOT_NULL>::oop_load(p); if (_young_gen->is_in_reserved(obj)) { assert(_card_table->addr_is_marked_precise(p), "Found unmarked precise oop"); _card_table->set_card_newgen(p); } }
< prev index next >