Mercurial > hg > truffle
comparison src/share/vm/memory/tenuredGeneration.cpp @ 1888:a7214d79fcf1
6896603: CMS/GCH: collection_attempt_is_safe() ergo should use more recent data
Summary: Deprecated HandlePromotionFailure, removing the ability to turn off that feature, did away with one epoch look-ahead when deciding if a scavenge is likely to fail, relying on current data.
Reviewed-by: jmasa, johnc, poonam
author | ysr |
---|---|
date | Sat, 23 Oct 2010 23:03:49 -0700 |
parents | c18cbe5936b8 |
children | f95d63e2154a |
comparison
equal
deleted
inserted
replaced
1887:cd3ef3fd20dd | 1888:a7214d79fcf1 |
---|---|
417 #else // SERIALGC | 417 #else // SERIALGC |
418 void TenuredGeneration::retire_alloc_buffers_before_full_gc() {} | 418 void TenuredGeneration::retire_alloc_buffers_before_full_gc() {} |
419 void TenuredGeneration::verify_alloc_buffers_clean() {} | 419 void TenuredGeneration::verify_alloc_buffers_clean() {} |
420 #endif // SERIALGC | 420 #endif // SERIALGC |
421 | 421 |
422 bool TenuredGeneration::promotion_attempt_is_safe( | 422 bool TenuredGeneration::promotion_attempt_is_safe(size_t max_promotion_in_bytes) const { |
423 size_t max_promotion_in_bytes, | 423 size_t available = max_contiguous_available(); |
424 bool younger_handles_promotion_failure) const { | 424 size_t av_promo = (size_t)gc_stats()->avg_promoted()->padded_average(); |
425 | 425 bool res = (available >= av_promo) || (available >= max_promotion_in_bytes); |
426 bool result = max_contiguous_available() >= max_promotion_in_bytes; | 426 if (PrintGC && Verbose) { |
427 | 427 gclog_or_tty->print_cr( |
428 if (younger_handles_promotion_failure && !result) { | 428 "Tenured: promo attempt is%s safe: available("SIZE_FORMAT") %s av_promo("SIZE_FORMAT")," |
429 result = max_contiguous_available() >= | 429 "max_promo("SIZE_FORMAT")", |
430 (size_t) gc_stats()->avg_promoted()->padded_average(); | 430 res? "":" not", available, res? ">=":"<", |
431 if (PrintGC && Verbose && result) { | 431 av_promo, max_promotion_in_bytes); |
432 gclog_or_tty->print_cr("TenuredGeneration::promotion_attempt_is_safe" | 432 } |
433 " contiguous_available: " SIZE_FORMAT | 433 return res; |
434 " avg_promoted: " SIZE_FORMAT, | 434 } |
435 max_contiguous_available(), | |
436 gc_stats()->avg_promoted()->padded_average()); | |
437 } | |
438 } else { | |
439 if (PrintGC && Verbose) { | |
440 gclog_or_tty->print_cr("TenuredGeneration::promotion_attempt_is_safe" | |
441 " contiguous_available: " SIZE_FORMAT | |
442 " promotion_in_bytes: " SIZE_FORMAT, | |
443 max_contiguous_available(), max_promotion_in_bytes); | |
444 } | |
445 } | |
446 return result; | |
447 } |