< prev index next >

src/share/vm/gc/parallel/psCompactionManager.cpp

Print this page

        

*** 252,262 **** --- 252,268 ---- if (!oopDesc::is_null(next_oop)) { // i.e. ref is not "active" T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr(obj); log_develop_trace(gc, ref)(" Process discovered as normal " PTR_FORMAT, p2i(discovered_addr)); cm->mark_and_push(discovered_addr); } + // Treat next as normal oop cm->mark_and_push(next_addr); + // Treat value as normal oop if Epehemeron + if (klass->reference_type() == REF_EPHEMERON) { + T* value_addr = (T*)java_lang_ref_Ephemeron::value_addr(obj); + cm->mark_and_push(value_addr); + } klass->InstanceKlass::oop_pc_follow_contents(obj, cm); } void InstanceRefKlass::oop_pc_follow_contents(oop obj, ParCompactionManager* cm) {
< prev index next >