< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp
Print this page
rev 49685 : imported patch 8201490-improve-conc-mark-keepalive
*** 191,203 ****
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) {
if (!_cm->mark_in_next_bitmap(_worker_id, obj)) {
! return;
}
// 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();
--- 191,203 ----
inline void G1ConcurrentMark::add_to_liveness(uint worker_id, oop const obj, size_t size) {
task(worker_id)->update_liveness(obj, size);
}
! inline bool G1CMTask::make_reference_grey(oop obj) {
if (!_cm->mark_in_next_bitmap(_worker_id, obj)) {
! 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,250 ****
process_grey_task_entry<false>(entry);
} else {
push(entry);
}
}
}
template <class T>
! inline void G1CMTask::deal_with_reference(T* p) {
increment_refs_reached();
oop const obj = RawAccess<MO_VOLATILE>::oop_load(p);
if (obj == NULL) {
! 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);
--- 231,251 ----
process_grey_task_entry<false>(entry);
} else {
push(entry);
}
}
+ return true;
}
template <class T>
! inline bool G1CMTask::deal_with_reference(T* p) {
increment_refs_reached();
oop const obj = RawAccess<MO_VOLATILE>::oop_load(p);
if (obj == NULL) {
! return false;
}
! 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 >