< prev index next >

src/share/vm/gc/serial/markSweep.cpp

Print this page

        

*** 83,92 **** --- 83,93 ---- template <class T> inline void MarkSweep::mark_and_push(T* p) { T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); + obj = oopDesc::bs()->resolve_and_update_oop(p, obj); if (!obj->mark()->is_marked() && !is_archive_object(obj)) { mark_object(obj); _marking_stack.push(obj); }
*** 180,189 **** --- 181,191 ---- assert(!Universe::heap()->is_in_reserved(p), "roots shouldn't be things within the heap"); T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); + obj = oopDesc::bs()->resolve_and_update_oop(p, obj); if (!obj->mark()->is_marked() && !is_archive_object(obj)) { mark_object(obj); follow_object(obj); }
< prev index next >