--- old/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp 2018-04-12 16:12:03.332381266 +0200 +++ new/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp 2018-04-12 16:12:03.068372896 +0200 @@ -193,9 +193,9 @@ 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 @@ -233,16 +233,17 @@ push(entry); } } + return true; } template -inline void G1CMTask::deal_with_reference(T* p) { +inline bool G1CMTask::deal_with_reference(T* p) { increment_refs_reached(); oop const obj = RawAccess::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) {