src/share/vm/memory/defNewGeneration.cpp

Print this page

        

*** 1002,1011 **** --- 1002,1014 ---- // We try to allocate from the eden. If that works, we are happy. // Note that since DefNewGeneration supports lock-free allocation, we // have to use it here, as well. HeapWord* result = eden()->par_allocate(word_size); if (result != NULL) { + if (CMSEdenChunksRecordAlways && _next_gen != NULL) { + _next_gen->sample_eden_chunk(); + } return result; } do { HeapWord* old_limit = eden()->soft_end(); if (old_limit < eden()->end()) {
*** 1032,1048 **** // out of heap space, and we try to allocate the from-space, too. // allocate_from_space can't be inlined because that would introduce a // circular dependency at compile time. if (result == NULL) { result = allocate_from_space(word_size); } return result; } HeapWord* DefNewGeneration::par_allocate(size_t word_size, bool is_tlab) { ! return eden()->par_allocate(word_size); } void DefNewGeneration::gc_prologue(bool full) { // Ensure that _end and _soft_end are the same in eden space. eden()->set_soft_end(eden()->end()); --- 1035,1057 ---- // out of heap space, and we try to allocate the from-space, too. // allocate_from_space can't be inlined because that would introduce a // circular dependency at compile time. if (result == NULL) { result = allocate_from_space(word_size); + } else if (CMSEdenChunksRecordAlways && _next_gen != NULL) { + _next_gen->sample_eden_chunk(); } return result; } HeapWord* DefNewGeneration::par_allocate(size_t word_size, bool is_tlab) { ! HeapWord* res = eden()->par_allocate(word_size); ! if (CMSEdenChunksRecordAlways && _next_gen != NULL) { ! _next_gen->sample_eden_chunk(); ! } ! return res; } void DefNewGeneration::gc_prologue(bool full) { // Ensure that _end and _soft_end are the same in eden space. eden()->set_soft_end(eden()->end());