< prev index next >

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

Print this page
rev 10869 : [mq]: 8153170-kim-review


1127 
1128 public:
1129   G1NoteEndOfConcMarkClosure(G1CollectedHeap* g1,
1130                              FreeRegionList* local_cleanup_list,
1131                              HRRSCleanupTask* hrrs_cleanup_task) :
1132     _g1(g1),
1133     _freed_bytes(0),
1134     _local_cleanup_list(local_cleanup_list),
1135     _old_regions_removed(0),
1136     _humongous_regions_removed(0),
1137     _hrrs_cleanup_task(hrrs_cleanup_task) { }
1138 
1139   size_t freed_bytes() { return _freed_bytes; }
1140   const uint old_regions_removed() { return _old_regions_removed; }
1141   const uint humongous_regions_removed() { return _humongous_regions_removed; }
1142 
1143   bool doHeapRegion(HeapRegion *hr) {
1144     if (hr->is_archive()) {
1145       return false;
1146     }
1147     // We use a claim value of zero here because all regions
1148     // were claimed with value 1 in the FinalCount task.
1149     _g1->reset_gc_time_stamps(hr);
1150     hr->note_end_of_marking();
1151 
1152     if (hr->used() > 0 && hr->max_live_bytes() == 0 && !hr->is_young()) {
1153       _freed_bytes += hr->used();
1154       hr->set_containing_set(NULL);
1155       if (hr->is_humongous()) {
1156         _humongous_regions_removed++;
1157         _g1->free_humongous_region(hr, _local_cleanup_list, true);
1158       } else {
1159         _old_regions_removed++;
1160         _g1->free_region(hr, _local_cleanup_list, true);
1161       }
1162     } else {
1163       hr->rem_set()->do_cleanup_work(_hrrs_cleanup_task);
1164     }
1165 
1166     return false;
1167   }
1168 };




1127 
1128 public:
1129   G1NoteEndOfConcMarkClosure(G1CollectedHeap* g1,
1130                              FreeRegionList* local_cleanup_list,
1131                              HRRSCleanupTask* hrrs_cleanup_task) :
1132     _g1(g1),
1133     _freed_bytes(0),
1134     _local_cleanup_list(local_cleanup_list),
1135     _old_regions_removed(0),
1136     _humongous_regions_removed(0),
1137     _hrrs_cleanup_task(hrrs_cleanup_task) { }
1138 
1139   size_t freed_bytes() { return _freed_bytes; }
1140   const uint old_regions_removed() { return _old_regions_removed; }
1141   const uint humongous_regions_removed() { return _humongous_regions_removed; }
1142 
1143   bool doHeapRegion(HeapRegion *hr) {
1144     if (hr->is_archive()) {
1145       return false;
1146     }


1147     _g1->reset_gc_time_stamps(hr);
1148     hr->note_end_of_marking();
1149 
1150     if (hr->used() > 0 && hr->max_live_bytes() == 0 && !hr->is_young()) {
1151       _freed_bytes += hr->used();
1152       hr->set_containing_set(NULL);
1153       if (hr->is_humongous()) {
1154         _humongous_regions_removed++;
1155         _g1->free_humongous_region(hr, _local_cleanup_list, true);
1156       } else {
1157         _old_regions_removed++;
1158         _g1->free_region(hr, _local_cleanup_list, true);
1159       }
1160     } else {
1161       hr->rem_set()->do_cleanup_work(_hrrs_cleanup_task);
1162     }
1163 
1164     return false;
1165   }
1166 };


< prev index next >