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"); |