< prev index next >

src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp

Print this page
rev 49685 : imported patch 8201490-improve-conc-mark-keepalive

@@ -191,13 +191,13 @@
 
 inline void G1ConcurrentMark::add_to_liveness(uint worker_id, oop const obj, size_t size) {
   task(worker_id)->update_liveness(obj, size);
 }
 
-inline void G1CMTask::make_reference_grey(oop obj) {
+inline bool G1CMTask::make_reference_grey(oop obj) {
   if (!_cm->mark_in_next_bitmap(_worker_id, obj)) {
-    return;
+    return false;
   }
 
   // No OrderAccess:store_load() is needed. It is implicit in the
   // CAS done in G1CMBitMap::parMark() call in the routine above.
   HeapWord* global_finger = _cm->finger();

@@ -231,20 +231,21 @@
       process_grey_task_entry<false>(entry);
     } else {
       push(entry);
     }
   }
+  return true;
 }
 
 template <class T>
-inline void G1CMTask::deal_with_reference(T* p) {
+inline bool G1CMTask::deal_with_reference(T* p) {
   increment_refs_reached();
   oop const obj = RawAccess<MO_VOLATILE>::oop_load(p);
   if (obj == NULL) {
-    return;
+    return false;
   }
-  make_reference_grey(obj);
+  return make_reference_grey(obj);
 }
 
 inline void G1ConcurrentMark::mark_in_prev_bitmap(oop p) {
   assert(!_prev_mark_bitmap->is_marked((HeapWord*) p), "sanity");
  _prev_mark_bitmap->mark((HeapWord*) p);
< prev index next >