Print this page
Abort concurrent mark

*** 346,356 **** // structures is detected volatile bool _has_overflown; // True: marking is concurrent, false: we're in remark volatile bool _concurrent; // Set at the end of a Full GC so that marking aborts ! volatile bool _has_aborted; // Used when remark aborts due to an overflow to indicate that // another concurrent marking phase should start volatile bool _restart_for_overflow; --- 346,359 ---- // structures is detected volatile bool _has_overflown; // True: marking is concurrent, false: we're in remark volatile bool _concurrent; // Set at the end of a Full GC so that marking aborts ! volatile bool _aborted_by_fullgc; ! // Set at the end of a inital mark young GC if doesn't need to do concurrent mark ! // so that marking aborts ! volatile bool _aborted_by_initial_mark; // Used when remark aborts due to an overflow to indicate that // another concurrent marking phase should start volatile bool _restart_for_overflow;
*** 507,519 **** G1CMRootMemRegions* root_regions() { return &_root_regions; } void concurrent_cycle_start(); // Abandon current marking iteration due to a Full GC. ! void concurrent_cycle_abort(); void concurrent_cycle_end(); void update_accum_task_vtime(int i, double vtime) { _accum_task_vtime[i] += vtime; } double all_task_accum_vtime() { --- 510,524 ---- G1CMRootMemRegions* root_regions() { return &_root_regions; } void concurrent_cycle_start(); // Abandon current marking iteration due to a Full GC. ! void concurrent_cycle_abort_by_fullgc(); void concurrent_cycle_end(); + void concurrent_cycle_abort_by_initial_mark(); + void update_accum_task_vtime(int i, double vtime) { _accum_task_vtime[i] += vtime; } double all_task_accum_vtime() {
*** 586,596 **** // If marking is not in progress, it's a no-op. void verify_no_collection_set_oops() PRODUCT_RETURN; inline bool do_yield_check(); ! bool has_aborted() { return _has_aborted; } void print_summary_info(); void print_worker_threads_on(outputStream* st) const; void threads_do(ThreadClosure* tc) const; --- 591,603 ---- // If marking is not in progress, it's a no-op. void verify_no_collection_set_oops() PRODUCT_RETURN; inline bool do_yield_check(); ! bool aborted_by_fullgc() { return _aborted_by_fullgc; } ! bool aborted_by_initial_mark() { return _aborted_by_initial_mark; } ! bool has_aborted() { return aborted_by_fullgc() || aborted_by_initial_mark(); } void print_summary_info(); void print_worker_threads_on(outputStream* st) const; void threads_do(ThreadClosure* tc) const;