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