< 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 >