< prev index next >

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

Print this page

        

@@ -268,11 +268,17 @@
                                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 >