< prev index next >
src/share/vm/gc_implementation/g1/g1Allocator.cpp
Print this page
*** 117,127 ****
size_t word_sz,
AllocationContext_t context) {
size_t gclab_word_size = _g1h->desired_plab_sz(dest);
if (word_sz * 100 < gclab_word_size * ParallelGCBufferWastePct) {
G1ParGCAllocBuffer* alloc_buf = alloc_buffer(dest, context);
- add_to_alloc_buffer_waste(alloc_buf->words_remaining());
alloc_buf->retire();
HeapWord* buf = _g1h->par_allocate_during_gc(dest, gclab_word_size, context);
if (buf == NULL) {
return NULL; // Let caller handle allocation failure.
--- 117,126 ----
*** 151,160 ****
void G1DefaultParGCAllocator::retire_alloc_buffers() {
for (uint state = 0; state < InCSetState::Num; state++) {
G1ParGCAllocBuffer* const buf = _alloc_buffers[state];
if (buf != NULL) {
- add_to_alloc_buffer_waste(buf->words_remaining());
buf->flush_and_retire_stats(_g1h->alloc_buffer_stats(state));
}
}
}
--- 150,170 ----
void G1DefaultParGCAllocator::retire_alloc_buffers() {
for (uint state = 0; state < InCSetState::Num; state++) {
G1ParGCAllocBuffer* const buf = _alloc_buffers[state];
if (buf != NULL) {
buf->flush_and_retire_stats(_g1h->alloc_buffer_stats(state));
}
}
}
+
+ G1PLABWasteStat G1DefaultParGCAllocator::wasted() {
+ G1PLABWasteStat total_wasted;
+ for (uint state = 0; state < InCSetState::Num; state++) {
+ G1ParGCAllocBuffer * const buf = _alloc_buffers[state];
+ if (buf != NULL) {
+ total_wasted.add_wasted(buf->wasted());
+ total_wasted.add_undo_wasted(buf->undo_wasted());
+ }
+ }
+ return total_wasted;
+ }
< prev index next >