< prev index next >
src/hotspot/share/gc/g1/g1Policy.cpp
Print this page
rev 57544 : 8236485: Work-in-progress: Epoch synchronization protocol for G1 concurrent refinement
Reviewed-by:
*** 500,516 ****
// Record mutator's card logging rate.
// Don't update if full collection; see above.
if (!is_full_collection) {
size_t total_cards = _pending_cards_at_gc_start + cr_cards + mut_cards;
! assert(_pending_cards_at_prev_gc_end <= total_cards,
! "untracked cards: last pending: " SIZE_FORMAT
! ", pending: " SIZE_FORMAT ", conc refine: " SIZE_FORMAT
! ", mut refine:" SIZE_FORMAT,
! _pending_cards_at_prev_gc_end, _pending_cards_at_gc_start,
! cr_cards, mut_cards);
! size_t logged_cards = total_cards - _pending_cards_at_prev_gc_end;
double logging_start_time = _analytics->prev_collection_pause_end_ms();
double logging_end_time = Ticks::now().seconds() * MILLIUNITS;
double logging_time = logging_end_time - logging_start_time;
// Unlike above for conc-refine rate, here we should not require a
// non-empty sample, since an application could go some time with only
--- 500,519 ----
// Record mutator's card logging rate.
// Don't update if full collection; see above.
if (!is_full_collection) {
size_t total_cards = _pending_cards_at_gc_start + cr_cards + mut_cards;
! // TODO: Fix assertion failure with +G1TestEpochSyncInConcRefinement,
! // and remove the MAX2() workaround below.
! // assert(_pending_cards_at_prev_gc_end <= total_cards,
! // "untracked cards: last pending: " SIZE_FORMAT
! // ", pending: " SIZE_FORMAT ", conc refine: " SIZE_FORMAT
! // ", mut refine:" SIZE_FORMAT,
! // _pending_cards_at_prev_gc_end, _pending_cards_at_gc_start,
! // cr_cards, mut_cards);
! size_t logged_cards = MAX2(static_cast<size_t>(0),
! total_cards - _pending_cards_at_prev_gc_end);
double logging_start_time = _analytics->prev_collection_pause_end_ms();
double logging_end_time = Ticks::now().seconds() * MILLIUNITS;
double logging_time = logging_end_time - logging_start_time;
// Unlike above for conc-refine rate, here we should not require a
// non-empty sample, since an application could go some time with only
< prev index next >