--- a/hotspot/src/share/vm/gc_implementation/g1/g1Allocator.cpp Mon Apr 27 09:08:07 2015 +0200
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1Allocator.cpp Wed Apr 22 17:05:00 2015 +0200
@@ -119,7 +119,6 @@
size_t gclab_word_size = _g1h->desired_plab_sz(dest);
if (word_sz * 100 < gclab_word_size * ParallelGCBufferWastePct) {
G1PLAB* 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);
@@ -153,8 +152,19 @@
for (uint state = 0; state < InCSetState::Num; state++) {
G1PLAB* 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));
}
}
}
+
+void G1DefaultParGCAllocator::waste(size_t& wasted, size_t& undo_wasted) {
+ wasted = 0;
+ undo_wasted = 0;
+ for (uint state = 0; state < InCSetState::Num; state++) {
+ G1PLAB * const buf = _alloc_buffers[state];
+ if (buf != NULL) {
+ wasted += buf->waste();
+ undo_wasted += buf->undo_waste();
+ }
+ }
+}