src/share/vm/gc_implementation/g1/g1ParScanThreadState.inline.hpp

Print this page

        

@@ -39,14 +39,15 @@
   // than one thread might claim the same card. So the same card may be
   // processed multiple times. So redo this check.
   G1CollectedHeap::in_cset_state_t in_cset_state = _g1h->in_cset_state(obj);
   if (in_cset_state == G1CollectedHeap::InCSet) {
     oop forwardee;
-    if (obj->is_forwarded()) {
-      forwardee = obj->forwardee();
+    markOop m = obj->mark();
+    if (m->is_marked()) {
+      forwardee = (oop) m->decode_pointer();
     } else {
-      forwardee = copy_to_survivor_space(obj);
+      forwardee = copy_to_survivor_space(obj, m);
     }
     oopDesc::encode_store_heap_oop(p, forwardee);
   } else if (in_cset_state == G1CollectedHeap::IsHumongous) {
     _g1h->set_humongous_is_live(obj);
   } else {