< prev index next >

src/share/vm/gc/g1/g1ParScanThreadState.cpp

Print this page
rev 8789 : [mq]: 8073052-Rename-and-clean-up-the-allocation-manager-hierarchy-in-g1Allocator
rev 8790 : imported patch 8003237-no-wait-for-free-list
rev 8791 : imported patch jon-fast-evac-failure

*** 40,50 **** _hash_seed(17), _queue_num(queue_num), _term_attempts(0), _tenuring_threshold(g1h->g1_policy()->tenuring_threshold()), _age_table(false), _scanner(g1h, rp), _strong_roots_time(0), _term_time(0), ! _no_more_space_in_old(false) { _scanner.set_par_scan_thread_state(this); // we allocate G1YoungSurvRateNumRegions plus one entries, since // we "sacrifice" entry 0 to keep track of surviving bytes for // non-young regions (where the age is -1) --- 40,50 ---- _hash_seed(17), _queue_num(queue_num), _term_attempts(0), _tenuring_threshold(g1h->g1_policy()->tenuring_threshold()), _age_table(false), _scanner(g1h, rp), _strong_roots_time(0), _term_time(0), ! _last_gen_is_full(false) { _scanner.set_par_scan_thread_state(this); // we allocate G1YoungSurvRateNumRegions plus one entries, since // we "sacrifice" entry 0 to keep track of surviving bytes for // non-young regions (where the age is -1)
*** 187,201 **** if (obj_ptr != NULL) { dest->set_old(); } else { // We just failed to allocate in old gen. The same idea as explained above // for making survivor gen unavailable for allocation applies for old gen. ! _no_more_space_in_old = plab_refill_in_old_failed; } return obj_ptr; } else { ! _no_more_space_in_old = previous_plab_refill_failed; assert(dest->is_old(), err_msg("Unexpected dest: " CSETSTATE_FORMAT, dest->value())); // no other space to try. return NULL; } } --- 187,201 ---- if (obj_ptr != NULL) { dest->set_old(); } else { // We just failed to allocate in old gen. The same idea as explained above // for making survivor gen unavailable for allocation applies for old gen. ! _last_gen_is_full = plab_refill_in_old_failed; } return obj_ptr; } else { ! _last_gen_is_full = previous_plab_refill_failed; assert(dest->is_old(), err_msg("Unexpected dest: " CSETSTATE_FORMAT, dest->value())); // no other space to try. return NULL; } }
*** 224,234 **** uint age = 0; InCSetState dest_state = next_state(state, old_mark, age); // The second clause is to prevent premature evacuation failure in case there // is still space in survivor, but old gen is full. ! if (_no_more_space_in_old && dest_state.is_old()) { return handle_evacuation_failure_par(old, old_mark); } HeapWord* obj_ptr = _plab_allocator->plab_allocate(dest_state, word_sz, context); // PLAB allocations should succeed most of the time, so we'll --- 224,234 ---- uint age = 0; InCSetState dest_state = next_state(state, old_mark, age); // The second clause is to prevent premature evacuation failure in case there // is still space in survivor, but old gen is full. ! if (_last_gen_is_full && dest_state.is_old()) { return handle_evacuation_failure_par(old, old_mark); } HeapWord* obj_ptr = _plab_allocator->plab_allocate(dest_state, word_sz, context); // PLAB allocations should succeed most of the time, so we'll
< prev index next >