diff src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @ 22895:f2e3f0e1f97d

8064473: Improved handling of age during object copy in G1 Reviewed-by: brutisso, tschatzl
author sfriberg
date Fri, 14 Nov 2014 15:03:39 +0100
parents 2af69bed8db6
children 80ac3ee51955
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Fri Oct 10 12:15:51 2014 +0200
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Fri Nov 14 15:03:39 2014 +0100
@@ -4479,10 +4479,11 @@
 
   if (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 = _par_scan_state->copy_to_survivor_space(obj);
+      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);