src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp
changeset 49809 ef5220d644e3
parent 49727 2bbd5117d91a
child 49964 99e698e94cc7
equal deleted inserted replaced
49808:f1dcdc3cd6b7 49809:ef5220d644e3
   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);