< 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 >