equal
deleted
inserted
replaced
191 |
191 |
192 inline void G1ConcurrentMark::add_to_liveness(uint worker_id, oop const obj, size_t size) { |
192 inline void G1ConcurrentMark::add_to_liveness(uint worker_id, oop const obj, size_t size) { |
193 task(worker_id)->update_liveness(obj, size); |
193 task(worker_id)->update_liveness(obj, size); |
194 } |
194 } |
195 |
195 |
196 inline void G1CMTask::make_reference_grey(oop obj) { |
196 inline bool G1CMTask::make_reference_grey(oop obj) { |
197 if (!_cm->mark_in_next_bitmap(_worker_id, obj)) { |
197 if (!_cm->mark_in_next_bitmap(_worker_id, obj)) { |
198 return; |
198 return false; |
199 } |
199 } |
200 |
200 |
201 // No OrderAccess:store_load() is needed. It is implicit in the |
201 // No OrderAccess:store_load() is needed. It is implicit in the |
202 // CAS done in G1CMBitMap::parMark() call in the routine above. |
202 // CAS done in G1CMBitMap::parMark() call in the routine above. |
203 HeapWord* global_finger = _cm->finger(); |
203 HeapWord* global_finger = _cm->finger(); |
231 process_grey_task_entry<false>(entry); |
231 process_grey_task_entry<false>(entry); |
232 } else { |
232 } else { |
233 push(entry); |
233 push(entry); |
234 } |
234 } |
235 } |
235 } |
|
236 return true; |
236 } |
237 } |
237 |
238 |
238 template <class T> |
239 template <class T> |
239 inline void G1CMTask::deal_with_reference(T* p) { |
240 inline bool G1CMTask::deal_with_reference(T* p) { |
240 increment_refs_reached(); |
241 increment_refs_reached(); |
241 oop const obj = RawAccess<MO_VOLATILE>::oop_load(p); |
242 oop const obj = RawAccess<MO_VOLATILE>::oop_load(p); |
242 if (obj == NULL) { |
243 if (obj == NULL) { |
243 return; |
244 return false; |
244 } |
245 } |
245 make_reference_grey(obj); |
246 return make_reference_grey(obj); |
246 } |
247 } |
247 |
248 |
248 inline void G1ConcurrentMark::mark_in_prev_bitmap(oop p) { |
249 inline void G1ConcurrentMark::mark_in_prev_bitmap(oop p) { |
249 assert(!_prev_mark_bitmap->is_marked((HeapWord*) p), "sanity"); |
250 assert(!_prev_mark_bitmap->is_marked((HeapWord*) p), "sanity"); |
250 _prev_mark_bitmap->mark((HeapWord*) p); |
251 _prev_mark_bitmap->mark((HeapWord*) p); |