< prev index next >

src/share/vm/oops/instanceRefKlass.inline.hpp

Print this page
rev 8203 : imported patch remove_config

@@ -53,11 +53,10 @@
       // treat referent as normal oop
       Devirtualizer<nv>::do_oop(closure, referent_addr);
     }
   }
   T* next_addr = (T*)java_lang_ref_Reference::next_addr(obj);
-  if (ReferenceProcessor::pending_list_uses_discovered_field()) {
     T next_oop  = oopDesc::load_heap_oop(next_addr);
     // Treat discovered as normal oop, if ref is not "active" (next non-NULL)
     if (!oopDesc::is_null(next_oop) && contains(disc_addr)) {
       // i.e. ref is not "active"
       debug_only(

@@ -66,22 +65,10 @@
                                  PTR_FORMAT, p2i(disc_addr));
         }
       )
       Devirtualizer<nv>::do_oop(closure, disc_addr);
     }
-  } else {
-    // In the case of older JDKs which do not use the discovered field for
-    // the pending list, an inactive ref (next != NULL) must always have a
-    // NULL discovered field.
-    debug_only(
-      T next_oop = oopDesc::load_heap_oop(next_addr);
-      T disc_oop = oopDesc::load_heap_oop(disc_addr);
-      assert(oopDesc::is_null(next_oop) || oopDesc::is_null(disc_oop),
-           err_msg("Found an inactive reference " PTR_FORMAT " with a non-NULL"
-                   "discovered field", p2i(obj)));
-    )
-  }
   // treat next as normal oop
   if (contains(next_addr)) {
     Devirtualizer<nv>::do_oop(closure, next_addr);
   }
 }
< prev index next >