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;