< prev index next >

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

Print this page

        

@@ -382,10 +382,17 @@
   }
   // Treat next as normal oop;  next is a link in the reference queue.
   if (PSScavenge::should_scavenge(next_addr)) {
     pm->claim_or_forward_depth(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);
+    if (PSScavenge::should_scavenge(value_addr)) {
+      pm->claim_or_forward_depth(value_addr);
+    }
+  }
   klass->InstanceKlass::oop_ps_push_contents(obj, pm);
 }
 
 void InstanceRefKlass::oop_ps_push_contents(oop obj, PSPromotionManager* pm) {
   if (UseCompressedOops) {
< prev index next >