*** 48,57 **** --- 48,59 ---- template <class T> inline void MarkSweep::mark_and_push(T* p) { T heap_oop = RawAccess<>::oop_load(p); if (!CompressedOops::is_null(heap_oop)) { oop obj = CompressedOops::decode_not_null(heap_oop); + assert_object_is_in_heap(p, obj); + if (!obj->mark_raw().is_marked()) { mark_object(obj); _marking_stack.push(obj); } }