--- old/src/hotspot/share/gc/parallel/psCardTable.cpp 2020-01-22 10:29:43.023694849 +0100 +++ new/src/hotspot/share/gc/parallel/psCardTable.cpp 2020-01-22 10:29:42.487686077 +0100 @@ -46,6 +46,8 @@ protected: template 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 @@ -103,6 +105,8 @@ protected: template 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)) { assert(_card_table->addr_is_marked_precise(p), "Found unmarked precise oop"); _card_table->set_card_newgen(p);