< prev index next >

src/share/vm/gc/g1/g1ConcurrentMark.cpp

Print this page
rev 13365 : [mq]: review_update_1


1175   uint _old_regions_removed;
1176   uint _humongous_regions_removed;
1177   HRRSCleanupTask* _hrrs_cleanup_task;
1178 
1179 public:
1180   G1NoteEndOfConcMarkClosure(G1CollectedHeap* g1,
1181                              FreeRegionList* local_cleanup_list,
1182                              HRRSCleanupTask* hrrs_cleanup_task) :
1183     _g1(g1),
1184     _freed_bytes(0),
1185     _local_cleanup_list(local_cleanup_list),
1186     _old_regions_removed(0),
1187     _humongous_regions_removed(0),
1188     _hrrs_cleanup_task(hrrs_cleanup_task) { }
1189 
1190   size_t freed_bytes() { return _freed_bytes; }
1191   const uint old_regions_removed() { return _old_regions_removed; }
1192   const uint humongous_regions_removed() { return _humongous_regions_removed; }
1193 
1194   bool doHeapRegion(HeapRegion *hr) {
1195     if (hr->is_archive()) {
1196       return false;
1197     }
1198     _g1->reset_gc_time_stamps(hr);
1199     hr->note_end_of_marking();
1200 
1201     if (hr->used() > 0 && hr->max_live_bytes() == 0 && !hr->is_young()) {
1202       _freed_bytes += hr->used();
1203       hr->set_containing_set(NULL);
1204       if (hr->is_humongous()) {
1205         _humongous_regions_removed++;
1206         _g1->free_humongous_region(hr, _local_cleanup_list, true /* skip_remset */);
1207       } else {
1208         _old_regions_removed++;
1209         _g1->free_region(hr, _local_cleanup_list, true /* skip_remset */);
1210       }
1211     } else {
1212       hr->rem_set()->do_cleanup_work(_hrrs_cleanup_task);
1213     }
1214 
1215     return false;
1216   }
1217 };
1218 
1219 class G1ParNoteEndTask: public AbstractGangTask {
1220   friend class G1NoteEndOfConcMarkClosure;
1221 




1175   uint _old_regions_removed;
1176   uint _humongous_regions_removed;
1177   HRRSCleanupTask* _hrrs_cleanup_task;
1178 
1179 public:
1180   G1NoteEndOfConcMarkClosure(G1CollectedHeap* g1,
1181                              FreeRegionList* local_cleanup_list,
1182                              HRRSCleanupTask* hrrs_cleanup_task) :
1183     _g1(g1),
1184     _freed_bytes(0),
1185     _local_cleanup_list(local_cleanup_list),
1186     _old_regions_removed(0),
1187     _humongous_regions_removed(0),
1188     _hrrs_cleanup_task(hrrs_cleanup_task) { }
1189 
1190   size_t freed_bytes() { return _freed_bytes; }
1191   const uint old_regions_removed() { return _old_regions_removed; }
1192   const uint humongous_regions_removed() { return _humongous_regions_removed; }
1193 
1194   bool doHeapRegion(HeapRegion *hr) {



1195     _g1->reset_gc_time_stamps(hr);
1196     hr->note_end_of_marking();
1197 
1198     if (hr->used() > 0 && hr->max_live_bytes() == 0 && !hr->is_young() && !hr->is_archive()) {
1199       _freed_bytes += hr->used();
1200       hr->set_containing_set(NULL);
1201       if (hr->is_humongous()) {
1202         _humongous_regions_removed++;
1203         _g1->free_humongous_region(hr, _local_cleanup_list, true /* skip_remset */);
1204       } else {
1205         _old_regions_removed++;
1206         _g1->free_region(hr, _local_cleanup_list, true /* skip_remset */);
1207       }
1208     } else {
1209       hr->rem_set()->do_cleanup_work(_hrrs_cleanup_task);
1210     }
1211 
1212     return false;
1213   }
1214 };
1215 
1216 class G1ParNoteEndTask: public AbstractGangTask {
1217   friend class G1NoteEndOfConcMarkClosure;
1218 


< prev index next >