////////////////////////////////////////////////////////// // Methods in class VM_CMS_Final_Remark_Operation ////////////////////////////////////////////////////////// void VM_CMS_Final_Remark::doit() { if (lost_race()) { // Nothing to do. return; } #ifndef USDT2 HS_DTRACE_PROBE(hs_private, cms__remark__begin); #else /* USDT2 */ HS_PRIVATE_CMS_REMARK_BEGIN(); #endif /* USDT2 */ _collector->_gc_timer_cm->register_gc_pause_start("Final Mark"); GenCollectedHeap* gch = GenCollectedHeap::heap(); GCCauseSetter gccs(gch, GCCause::_cms_final_remark); VM_CMS_Operation::verify_before_gc(); IsGCActiveMark x; // stop-world GC active _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsFinal, gch->gc_cause()); VM_CMS_Operation::verify_after_gc(); _collector->save_heap_summary(); _collector->_gc_timer_cm->register_gc_pause_end(); #ifndef USDT2 HS_DTRACE_PROBE(hs_private, cms__remark__end); #else /* USDT2 */ HS_PRIVATE_CMS_REMARK_END(); #endif /* USDT2 */ }
////////////////////////////////////////////////////////// // Methods in class VM_CMS_Final_Remark_Operation ////////////////////////////////////////////////////////// void VM_CMS_Final_Remark::doit() { if (lost_race()) { // Nothing to do. return; } HS_PRIVATE_CMS_REMARK_BEGIN(); GCIdMark gc_id_mark(_gc_id); _collector->_gc_timer_cm->register_gc_pause_start("Final Mark"); GenCollectedHeap* gch = GenCollectedHeap::heap(); GCCauseSetter gccs(gch, GCCause::_cms_final_remark); VM_CMS_Operation::verify_before_gc(); IsGCActiveMark x; // stop-world GC active _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsFinal, gch->gc_cause()); VM_CMS_Operation::verify_after_gc(); _collector->save_heap_summary(); _collector->_gc_timer_cm->register_gc_pause_end(); HS_PRIVATE_CMS_REMARK_END(); }