--- old/src/share/vm/gc_implementation/g1/g1Allocator.hpp 2015-04-20 17:36:08.052740097 +0300 +++ new/src/share/vm/gc_implementation/g1/g1Allocator.hpp 2015-04-20 17:36:07.976738919 +0300 @@ -183,12 +183,6 @@ // architectures have a special compare against zero instructions. const uint _survivor_alignment_bytes; - size_t _alloc_buffer_waste; - size_t _undo_waste; - - void add_to_alloc_buffer_waste(size_t waste) { _alloc_buffer_waste += waste; } - void add_to_undo_waste(size_t waste) { _undo_waste += waste; } - virtual void retire_alloc_buffers() = 0; virtual G1PLAB* alloc_buffer(InCSetState dest, AllocationContext_t context) = 0; @@ -208,15 +202,13 @@ public: G1ParGCAllocator(G1CollectedHeap* g1h) : - _g1h(g1h), _survivor_alignment_bytes(calc_survivor_alignment_bytes()), - _alloc_buffer_waste(0), _undo_waste(0) { + _g1h(g1h), _survivor_alignment_bytes(calc_survivor_alignment_bytes()) { } static G1ParGCAllocator* create_allocator(G1CollectedHeap* g1h); - size_t alloc_buffer_waste() { return _alloc_buffer_waste; } - size_t undo_waste() {return _undo_waste; } - + virtual void waste(size_t& wasted, size_t& undo_wasted) = 0; + // Allocate word_sz words in dest, either directly into the regions or by // allocating a new PLAB. Returns the address of the allocated memory, NULL if // not successful. @@ -247,14 +239,7 @@ } void undo_allocation(InCSetState dest, HeapWord* obj, size_t word_sz, AllocationContext_t context) { - if (alloc_buffer(dest, context)->contains(obj)) { - assert(alloc_buffer(dest, context)->contains(obj + word_sz - 1), - "should contain whole object"); - alloc_buffer(dest, context)->undo_allocation(obj, word_sz); - } else { - CollectedHeap::fill_with_object(obj, word_sz); - add_to_undo_waste(word_sz); - } + alloc_buffer(dest, context)->undo_allocation(obj, word_sz); } }; @@ -274,7 +259,9 @@ return _alloc_buffers[dest.value()]; } - virtual void retire_alloc_buffers() ; + virtual void retire_alloc_buffers(); + + virtual void waste(size_t& wasted, size_t& undo_wasted); }; #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1ALLOCATOR_HPP