src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

Print this page

        

*** 4268,4281 **** G1CollectedHeap::in_cset_state_t state = _g1->in_cset_state(obj); if (state == G1CollectedHeap::InCSet) { oop forwardee; ! if (obj->is_forwarded()) { ! forwardee = obj->forwardee(); } else { ! forwardee = _par_scan_state->copy_to_survivor_space(obj); } assert(forwardee != NULL, "forwardee should not be NULL"); oopDesc::encode_store_heap_oop(p, forwardee); if (do_mark_object != G1MarkNone && forwardee != obj) { // If the object is self-forwarded we don't need to explicitly --- 4268,4282 ---- G1CollectedHeap::in_cset_state_t state = _g1->in_cset_state(obj); if (state == G1CollectedHeap::InCSet) { oop forwardee; ! markOop m = obj->mark(); ! if (m->is_marked()) { ! forwardee = (oop) m->decode_pointer(); } else { ! forwardee = _par_scan_state->copy_to_survivor_space(obj, m); } assert(forwardee != NULL, "forwardee should not be NULL"); oopDesc::encode_store_heap_oop(p, forwardee); if (do_mark_object != G1MarkNone && forwardee != obj) { // If the object is self-forwarded we don't need to explicitly