# HG changeset patch # User sjohanss # Date 1447763875 0 # Node ID 8726d73d17fba25fa1ddec090c20e6a1cd6e62fd # Parent f8097485b483552d6435e37214fe948fb273c030# Parent 42523f0da3978a9dcb343d981835ccdb86e10169 Merge diff -r f8097485b483 -r 8726d73d17fb hotspot/src/share/vm/gc/g1/g1Allocator.cpp --- a/hotspot/src/share/vm/gc/g1/g1Allocator.cpp Thu Nov 05 15:05:59 2015 +0100 +++ b/hotspot/src/share/vm/gc/g1/g1Allocator.cpp Tue Nov 17 12:37:55 2015 +0000 @@ -33,6 +33,8 @@ G1DefaultAllocator::G1DefaultAllocator(G1CollectedHeap* heap) : G1Allocator(heap), + _survivor_is_full(false), + _old_is_full(false), _retained_old_gc_alloc_region(NULL), _survivor_gc_alloc_region(heap->alloc_buffer_stats(InCSetState::Young)), _old_gc_alloc_region(heap->alloc_buffer_stats(InCSetState::Old)) { @@ -87,7 +89,8 @@ void G1DefaultAllocator::init_gc_alloc_regions(EvacuationInfo& evacuation_info) { assert_at_safepoint(true /* should_be_vm_thread */); - G1Allocator::init_gc_alloc_regions(evacuation_info); + _survivor_is_full = false; + _old_is_full = false; _survivor_gc_alloc_region.init(); _old_gc_alloc_region.init(); @@ -118,6 +121,22 @@ _retained_old_gc_alloc_region = NULL; } +bool G1DefaultAllocator::survivor_is_full(AllocationContext_t context) const { + return _survivor_is_full; +} + +bool G1DefaultAllocator::old_is_full(AllocationContext_t context) const { + return _old_is_full; +} + +void G1DefaultAllocator::set_survivor_full(AllocationContext_t context) { + _survivor_is_full = true; +} + +void G1DefaultAllocator::set_old_full(AllocationContext_t context) { + _old_is_full = true; +} + G1PLAB::G1PLAB(size_t gclab_word_size) : PLAB(gclab_word_size), _retired(true) { } @@ -165,22 +184,6 @@ } } -bool G1Allocator::survivor_is_full(AllocationContext_t context) const { - return _survivor_is_full; -} - -bool G1Allocator::old_is_full(AllocationContext_t context) const { - return _old_is_full; -} - -void G1Allocator::set_survivor_full(AllocationContext_t context) { - _survivor_is_full = true; -} - -void G1Allocator::set_old_full(AllocationContext_t context) { - _old_is_full = true; -} - HeapWord* G1Allocator::survivor_attempt_allocation(size_t min_word_size, size_t desired_word_size, size_t* actual_word_size, @@ -232,11 +235,6 @@ return result; } -void G1Allocator::init_gc_alloc_regions(EvacuationInfo& evacuation_info) { - _survivor_is_full = false; - _old_is_full = false; -} - G1PLABAllocator::G1PLABAllocator(G1Allocator* allocator) : _g1h(G1CollectedHeap::heap()), _allocator(allocator), diff -r f8097485b483 -r 8726d73d17fb hotspot/src/share/vm/gc/g1/g1Allocator.hpp --- a/hotspot/src/share/vm/gc/g1/g1Allocator.hpp Thu Nov 05 15:05:59 2015 +0100 +++ b/hotspot/src/share/vm/gc/g1/g1Allocator.hpp Tue Nov 17 12:37:55 2015 +0000 @@ -38,19 +38,16 @@ // Also keeps track of retained regions across GCs. class G1Allocator : public CHeapObj { friend class VMStructs; -private: - bool _survivor_is_full; - bool _old_is_full; protected: G1CollectedHeap* _g1h; virtual MutatorAllocRegion* mutator_alloc_region(AllocationContext_t context) = 0; - virtual bool survivor_is_full(AllocationContext_t context) const; - virtual bool old_is_full(AllocationContext_t context) const; + virtual bool survivor_is_full(AllocationContext_t context) const = 0; + virtual bool old_is_full(AllocationContext_t context) const = 0; - virtual void set_survivor_full(AllocationContext_t context); - virtual void set_old_full(AllocationContext_t context); + virtual void set_survivor_full(AllocationContext_t context) = 0; + virtual void set_old_full(AllocationContext_t context) = 0; // Accessors to the allocation regions. virtual SurvivorGCAllocRegion* survivor_gc_alloc_region(AllocationContext_t context) = 0; @@ -67,7 +64,7 @@ size_t* actual_word_size, AllocationContext_t context); public: - G1Allocator(G1CollectedHeap* heap) : _g1h(heap), _survivor_is_full(false), _old_is_full(false) { } + G1Allocator(G1CollectedHeap* heap) : _g1h(heap) { } virtual ~G1Allocator() { } static G1Allocator* create_allocator(G1CollectedHeap* g1h); @@ -79,7 +76,7 @@ virtual void init_mutator_alloc_region() = 0; virtual void release_mutator_alloc_region() = 0; - virtual void init_gc_alloc_regions(EvacuationInfo& evacuation_info); + virtual void init_gc_alloc_regions(EvacuationInfo& evacuation_info) = 0; virtual void release_gc_alloc_regions(EvacuationInfo& evacuation_info) = 0; virtual void abandon_gc_alloc_regions() = 0; @@ -119,6 +116,9 @@ // and old generation allocation region. // Can retain the (single) old generation allocation region across GCs. class G1DefaultAllocator : public G1Allocator { +private: + bool _survivor_is_full; + bool _old_is_full; protected: // Alloc region used to satisfy mutator allocation requests. MutatorAllocRegion _mutator_alloc_region; @@ -135,6 +135,12 @@ public: G1DefaultAllocator(G1CollectedHeap* heap); + virtual bool survivor_is_full(AllocationContext_t context) const; + virtual bool old_is_full(AllocationContext_t context) const ; + + virtual void set_survivor_full(AllocationContext_t context); + virtual void set_old_full(AllocationContext_t context); + virtual void init_mutator_alloc_region(); virtual void release_mutator_alloc_region();