< prev index next >

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

Print this page
rev 7902 : [mq]: 8073052-Rename-and-clean-up-the-allocation-manager-hierarchy-in-g1Allocator

*** 56,66 **** vm_exit_out_of_memory(array_length * sizeof(size_t), OOM_MALLOC_ERROR, "Not enough space for young surv histo."); _surviving_young_words = _surviving_young_words_base + PADDING_ELEM_NUM; memset(_surviving_young_words, 0, (size_t) real_length * sizeof(size_t)); ! _g1_par_allocator = G1ParGCAllocator::create_allocator(_g1h); _dest[InCSetState::NotInCSet] = InCSetState::NotInCSet; // The dest for Young is used when the objects are aged enough to // need to be moved to the next space. _dest[InCSetState::Young] = InCSetState::Old; --- 56,66 ---- vm_exit_out_of_memory(array_length * sizeof(size_t), OOM_MALLOC_ERROR, "Not enough space for young surv histo."); _surviving_young_words = _surviving_young_words_base + PADDING_ELEM_NUM; memset(_surviving_young_words, 0, (size_t) real_length * sizeof(size_t)); ! _plab_allocator = PLABAllocator::create_allocator(_g1h); _dest[InCSetState::NotInCSet] = InCSetState::NotInCSet; // The dest for Young is used when the objects are aged enough to // need to be moved to the next space. _dest[InCSetState::Young] = InCSetState::Old;
*** 68,79 **** _start = os::elapsedTime(); } G1ParScanThreadState::~G1ParScanThreadState() { ! _g1_par_allocator->retire_alloc_buffers(); ! delete _g1_par_allocator; FREE_C_HEAP_ARRAY(size_t, _surviving_young_words_base); } void G1ParScanThreadState::print_termination_stats_hdr(outputStream* const st) --- 68,79 ---- _start = os::elapsedTime(); } G1ParScanThreadState::~G1ParScanThreadState() { ! _plab_allocator->retire_alloc_buffers(); ! delete _plab_allocator; FREE_C_HEAP_ARRAY(size_t, _surviving_young_words_base); } void G1ParScanThreadState::print_termination_stats_hdr(outputStream* const st)
*** 92,103 **** outputStream* const st) const { const double elapsed_ms = elapsed_time() * 1000.0; const double s_roots_ms = strong_roots_time() * 1000.0; const double term_ms = term_time() * 1000.0; ! const size_t alloc_buffer_waste = _g1_par_allocator->alloc_buffer_waste(); ! const size_t undo_waste = _g1_par_allocator->undo_waste(); st->print_cr("%3d %9.2f %9.2f %6.2f " "%9.2f %6.2f " SIZE_FORMAT_W(8) " " SIZE_FORMAT_W(7) " " SIZE_FORMAT_W(7) " " SIZE_FORMAT_W(7), i, elapsed_ms, s_roots_ms, s_roots_ms * 100 / elapsed_ms, term_ms, term_ms * 100 / elapsed_ms, term_attempts(), --- 92,103 ---- outputStream* const st) const { const double elapsed_ms = elapsed_time() * 1000.0; const double s_roots_ms = strong_roots_time() * 1000.0; const double term_ms = term_time() * 1000.0; ! const size_t alloc_buffer_waste = _plab_allocator->alloc_buffer_waste(); ! const size_t undo_waste = _plab_allocator->undo_waste(); st->print_cr("%3d %9.2f %9.2f %6.2f " "%9.2f %6.2f " SIZE_FORMAT_W(8) " " SIZE_FORMAT_W(7) " " SIZE_FORMAT_W(7) " " SIZE_FORMAT_W(7), i, elapsed_ms, s_roots_ms, s_roots_ms * 100 / elapsed_ms, term_ms, term_ms * 100 / elapsed_ms, term_attempts(),
*** 165,176 **** assert(dest->is_in_cset_or_humongous(), err_msg("Unexpected dest: " CSETSTATE_FORMAT, dest->value())); // Right now we only have two types of regions (young / old) so // let's keep the logic here simple. We can generalize it when necessary. if (dest->is_young()) { ! HeapWord* const obj_ptr = _g1_par_allocator->allocate(InCSetState::Old, ! word_sz, context); if (obj_ptr == NULL) { return NULL; } // Make sure that we won't attempt to copy any other objects out // of a survivor region (given that apparently we cannot allocate --- 165,177 ---- assert(dest->is_in_cset_or_humongous(), err_msg("Unexpected dest: " CSETSTATE_FORMAT, dest->value())); // Right now we only have two types of regions (young / old) so // let's keep the logic here simple. We can generalize it when necessary. if (dest->is_young()) { ! HeapWord* const obj_ptr = _plab_allocator->allocate(InCSetState::Old, ! word_sz, ! context); if (obj_ptr == NULL) { return NULL; } // Make sure that we won't attempt to copy any other objects out // of a survivor region (given that apparently we cannot allocate
*** 207,222 **** (!from_region->is_young() && young_index == 0), "invariant" ); const AllocationContext_t context = from_region->allocation_context(); uint age = 0; InCSetState dest_state = next_state(state, old_mark, age); ! HeapWord* obj_ptr = _g1_par_allocator->plab_allocate(dest_state, word_sz, context); // PLAB allocations should succeed most of the time, so we'll // normally check against NULL once and that's it. if (obj_ptr == NULL) { ! obj_ptr = _g1_par_allocator->allocate_direct_or_new_plab(dest_state, word_sz, context); if (obj_ptr == NULL) { obj_ptr = allocate_in_next_plab(state, &dest_state, word_sz, context); if (obj_ptr == NULL) { // This will either forward-to-self, or detect that someone else has // installed a forwarding pointer. --- 208,223 ---- (!from_region->is_young() && young_index == 0), "invariant" ); const AllocationContext_t context = from_region->allocation_context(); uint age = 0; InCSetState dest_state = next_state(state, old_mark, age); ! HeapWord* obj_ptr = _plab_allocator->plab_allocate(dest_state, word_sz, context); // PLAB allocations should succeed most of the time, so we'll // normally check against NULL once and that's it. if (obj_ptr == NULL) { ! obj_ptr = _plab_allocator->allocate_direct_or_new_plab(dest_state, word_sz, context); if (obj_ptr == NULL) { obj_ptr = allocate_in_next_plab(state, &dest_state, word_sz, context); if (obj_ptr == NULL) { // This will either forward-to-self, or detect that someone else has // installed a forwarding pointer.
*** 229,239 **** #ifndef PRODUCT // Should this evacuation fail? if (_g1h->evacuation_should_fail()) { // Doing this after all the allocation attempts also tests the // undo_allocation() method too. ! _g1_par_allocator->undo_allocation(dest_state, obj_ptr, word_sz, context); return _g1h->handle_evacuation_failure_par(this, old); } #endif // !PRODUCT // We're going to allocate linearly, so might as well prefetch ahead. --- 230,240 ---- #ifndef PRODUCT // Should this evacuation fail? if (_g1h->evacuation_should_fail()) { // Doing this after all the allocation attempts also tests the // undo_allocation() method too. ! _plab_allocator->undo_allocation(dest_state, obj_ptr, word_sz, context); return _g1h->handle_evacuation_failure_par(this, old); } #endif // !PRODUCT // We're going to allocate linearly, so might as well prefetch ahead.
*** 291,299 **** _scanner.set_region(to_region); obj->oop_iterate_backwards(&_scanner); } return obj; } else { ! _g1_par_allocator->undo_allocation(dest_state, obj_ptr, word_sz, context); return forward_ptr; } } --- 292,300 ---- _scanner.set_region(to_region); obj->oop_iterate_backwards(&_scanner); } return obj; } else { ! _plab_allocator->undo_allocation(dest_state, obj_ptr, word_sz, context); return forward_ptr; } }
< prev index next >