comparison src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp @ 1994:6cd6d394f280

7001033: assert(gch->gc_cause() == GCCause::_scavenge_alot || !gch->incremental_collection_failed()) 7002546: regression on SpecJbb2005 on 7b118 comparing to 7b117 on small heaps Summary: Relaxed assertion checking related to incremental_collection_failed flag to allow for ExplicitGCInvokesConcurrent behaviour where we do not want a failing scavenge to bail to a stop-world collection. Parameterized incremental_collection_will_fail() so we can selectively use, or not use, as appropriate, the statistical prediction at specific use sites. This essentially reverts the scavenge bail-out logic to what it was prior to some recent changes that had inadvertently started using the statistical prediction which can be noisy in the presence of bursty loads. Added some associated verbose non-product debugging messages. Reviewed-by: johnc, tonyp
author ysr
date Tue, 07 Dec 2010 21:55:53 -0800
parents f95d63e2154a
children da91efe96a93
comparison
equal deleted inserted replaced
1993:459fad165e5e 1994:6cd6d394f280
285 inline bool CMSCollector::should_abort_preclean() const { 285 inline bool CMSCollector::should_abort_preclean() const {
286 // We are in the midst of an "abortable preclean" and either 286 // We are in the midst of an "abortable preclean" and either
287 // scavenge is done or foreground GC wants to take over collection 287 // scavenge is done or foreground GC wants to take over collection
288 return _collectorState == AbortablePreclean && 288 return _collectorState == AbortablePreclean &&
289 (_abort_preclean || _foregroundGCIsActive || 289 (_abort_preclean || _foregroundGCIsActive ||
290 GenCollectedHeap::heap()->incremental_collection_will_fail()); 290 GenCollectedHeap::heap()->incremental_collection_will_fail(true /* consult_young */));
291 } 291 }
292 292
293 inline size_t CMSCollector::get_eden_used() const { 293 inline size_t CMSCollector::get_eden_used() const {
294 return _young_gen->as_DefNewGeneration()->eden()->used(); 294 return _young_gen->as_DefNewGeneration()->eden()->used();
295 } 295 }