void DefNewGeneration::handle_promotion_failure(oop old) { log_debug(gc, promotion)("Promotion failure size = %d) ", old->size()); _promotion_failed = true; _promotion_failed_info.register_copy_failure(old->size()); preserve_mark_if_necessary(old, old->mark()); // forward to self old->forward_to(old); _promo_failure_scan_stack.push(old); if (!_promo_failure_drain_in_progress) { // prevent recursion in copy_to_survivor_space() _promo_failure_drain_in_progress = true; drain_promo_failure_scan_stack(); _promo_failure_drain_in_progress = false; } }
void DefNewGeneration::handle_promotion_failure(oop old) { if (PrintPromotionFailure && !_promotion_failed) { gclog_or_tty->print(" (promotion failure size = " SIZE_FORMAT ") ", old->size()); } _promotion_failed = true; preserve_mark_if_necessary(old, old->mark()); // forward to self old->forward_to(old); _promo_failure_scan_stack.push(old); if (!_promo_failure_drain_in_progress) { // prevent recursion in copy_to_survivor_space() _promo_failure_drain_in_progress = true; drain_promo_failure_scan_stack(); _promo_failure_drain_in_progress = false; } }