src/share/vm/gc_implementation/g1/concurrentMark.cpp

Print this page




1185       Universe::verify(/* silent */ false,
1186                        /* option */ VerifyOption_G1UseNextMarking);
1187     }
1188     assert(!restart_for_overflow(), "sanity");
1189     // Completely reset the marking state since marking completed
1190     set_non_marking_state();
1191   }
1192 
1193 #if VERIFY_OBJS_PROCESSED
1194   _scan_obj_cl.objs_processed = 0;
1195   ThreadLocalObjQueue::objs_enqueued = 0;
1196 #endif
1197 
1198   // Statistics
1199   double now = os::elapsedTime();
1200   _remark_mark_times.add((mark_work_end - start) * 1000.0);
1201   _remark_weak_ref_times.add((now - mark_work_end) * 1000.0);
1202   _remark_times.add((now - start) * 1000.0);
1203 
1204   g1p->record_concurrent_mark_remark_end();



1205 }
1206 
1207 // Base class of the closures that finalize and verify the
1208 // liveness counting data.
1209 class CMCountDataClosureBase: public HeapRegionClosure {
1210 protected:
1211   G1CollectedHeap* _g1h;
1212   ConcurrentMark* _cm;
1213   CardTableModRefBS* _ct_bs;
1214 
1215   BitMap* _region_bm;
1216   BitMap* _card_bm;
1217 
1218   // Takes a region that's not empty (i.e., it has at least one
1219   // live object in it and sets its corresponding bit on the region
1220   // bitmap to 1. If the region is "starts humongous" it will also set
1221   // to 1 the bits on the region bitmap that correspond to its
1222   // associated "continues humongous" regions.
1223   void set_bit_for_region(HeapRegion* hr) {
1224     assert(!hr->continuesHumongous(), "should have filtered those out");




1185       Universe::verify(/* silent */ false,
1186                        /* option */ VerifyOption_G1UseNextMarking);
1187     }
1188     assert(!restart_for_overflow(), "sanity");
1189     // Completely reset the marking state since marking completed
1190     set_non_marking_state();
1191   }
1192 
1193 #if VERIFY_OBJS_PROCESSED
1194   _scan_obj_cl.objs_processed = 0;
1195   ThreadLocalObjQueue::objs_enqueued = 0;
1196 #endif
1197 
1198   // Statistics
1199   double now = os::elapsedTime();
1200   _remark_mark_times.add((mark_work_end - start) * 1000.0);
1201   _remark_weak_ref_times.add((now - mark_work_end) * 1000.0);
1202   _remark_times.add((now - start) * 1000.0);
1203 
1204   g1p->record_concurrent_mark_remark_end();
1205 
1206   G1CMIsAliveClosure is_alive(g1h);
1207   g1h->gc_tracer_cm()->report_object_count_after_gc(&is_alive);
1208 }
1209 
1210 // Base class of the closures that finalize and verify the
1211 // liveness counting data.
1212 class CMCountDataClosureBase: public HeapRegionClosure {
1213 protected:
1214   G1CollectedHeap* _g1h;
1215   ConcurrentMark* _cm;
1216   CardTableModRefBS* _ct_bs;
1217 
1218   BitMap* _region_bm;
1219   BitMap* _card_bm;
1220 
1221   // Takes a region that's not empty (i.e., it has at least one
1222   // live object in it and sets its corresponding bit on the region
1223   // bitmap to 1. If the region is "starts humongous" it will also set
1224   // to 1 the bits on the region bitmap that correspond to its
1225   // associated "continues humongous" regions.
1226   void set_bit_for_region(HeapRegion* hr) {
1227     assert(!hr->continuesHumongous(), "should have filtered those out");