changeset 9626:fd59c4412e00

Resolve and update the referent field in Reference object during mark-compact.
author rkennke
date Fri, 25 Sep 2015 16:45:39 +0200
parents c7cafe8a2ba0
children c02a7038ce96
files src/share/vm/gc/serial/markSweep.cpp
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/gc/serial/markSweep.cpp	Thu Sep 24 12:49:23 2015 +0200
+++ b/src/share/vm/gc/serial/markSweep.cpp	Fri Sep 25 16:45:39 2015 +0200
@@ -124,6 +124,9 @@
   )
   if (!oopDesc::is_null(heap_oop)) {
     oop referent = oopDesc::decode_heap_oop_not_null(heap_oop);
+    if (UseShenandoahGC) {
+      referent = ShenandoahBarrierSet::resolve_and_update_oop_static(referent_addr, referent);
+    }
     if (!referent->is_gc_marked() &&
         MarkSweep::ref_processor()->discover_reference(obj, klass->reference_type())) {
       // reference was discovered, referent will be traversed later