59 virtual MutatorAllocRegion* mutator_alloc_region(AllocationContext_t context) = 0;
60 virtual SurvivorGCAllocRegion* survivor_gc_alloc_region(AllocationContext_t context) = 0;
61 virtual OldGCAllocRegion* old_gc_alloc_region(AllocationContext_t context) = 0;
62 virtual size_t used() = 0;
63 virtual bool is_retained_old_region(HeapRegion* hr) = 0;
64
65 void reuse_retained_old_region(EvacuationInfo& evacuation_info,
66 OldGCAllocRegion* old,
67 HeapRegion** retained);
68
69 size_t used_unlocked() const {
70 return _summary_bytes_used;
71 }
72
73 void increase_used(size_t bytes) {
74 _summary_bytes_used += bytes;
75 }
76
77 void decrease_used(size_t bytes) {
78 assert(_summary_bytes_used >= bytes,
79 err_msg("invariant: _summary_bytes_used: "SIZE_FORMAT" should be >= bytes: "SIZE_FORMAT,
80 _summary_bytes_used, bytes));
81 _summary_bytes_used -= bytes;
82 }
83
84 void set_used(size_t bytes) {
85 _summary_bytes_used = bytes;
86 }
87
88 virtual HeapRegion* new_heap_region(uint hrs_index,
89 G1BlockOffsetSharedArray* sharedOffsetArray,
90 MemRegion mr) {
91 return new HeapRegion(hrs_index, sharedOffsetArray, mr);
92 }
93 };
94
95 // The default allocator for G1.
96 class G1DefaultAllocator : public G1Allocator {
97 protected:
98 // Alloc region used to satisfy mutator allocation requests.
99 MutatorAllocRegion _mutator_alloc_region;
|
59 virtual MutatorAllocRegion* mutator_alloc_region(AllocationContext_t context) = 0;
60 virtual SurvivorGCAllocRegion* survivor_gc_alloc_region(AllocationContext_t context) = 0;
61 virtual OldGCAllocRegion* old_gc_alloc_region(AllocationContext_t context) = 0;
62 virtual size_t used() = 0;
63 virtual bool is_retained_old_region(HeapRegion* hr) = 0;
64
65 void reuse_retained_old_region(EvacuationInfo& evacuation_info,
66 OldGCAllocRegion* old,
67 HeapRegion** retained);
68
69 size_t used_unlocked() const {
70 return _summary_bytes_used;
71 }
72
73 void increase_used(size_t bytes) {
74 _summary_bytes_used += bytes;
75 }
76
77 void decrease_used(size_t bytes) {
78 assert(_summary_bytes_used >= bytes,
79 err_msg("invariant: _summary_bytes_used: " SIZE_FORMAT " should be >= bytes: " SIZE_FORMAT,
80 _summary_bytes_used, bytes));
81 _summary_bytes_used -= bytes;
82 }
83
84 void set_used(size_t bytes) {
85 _summary_bytes_used = bytes;
86 }
87
88 virtual HeapRegion* new_heap_region(uint hrs_index,
89 G1BlockOffsetSharedArray* sharedOffsetArray,
90 MemRegion mr) {
91 return new HeapRegion(hrs_index, sharedOffsetArray, mr);
92 }
93 };
94
95 // The default allocator for G1.
96 class G1DefaultAllocator : public G1Allocator {
97 protected:
98 // Alloc region used to satisfy mutator allocation requests.
99 MutatorAllocRegion _mutator_alloc_region;
|