< prev index next >

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

Print this page

        

*** 44,53 **** --- 44,55 ---- HeapWord* _unmarked_addr; protected: template <class T> void do_oop_work(T* p) { oop obj = RawAccess<>::oop_load(p); + assert_object_is_in_heap_or_null(p, obj); + 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;
*** 101,110 **** --- 103,114 ---- PSCardTable* _card_table; protected: template <class T> void do_oop_work(T* p) { oop obj = RawAccess<IS_NOT_NULL>::oop_load(p); + assert_object_is_in_heap_or_null(p, obj); + 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 >