< prev index next >
src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
Print this page
rev 7903 : [mq]: 8073052-kim-sangheon-stefanj-changes
*** 187,197 ****
friend class G1Allocator;
// Closures used in implementation.
friend class G1ParScanThreadState;
friend class G1ParTask;
! friend class G1ParGCAllocator;
friend class G1PrepareCompactClosure;
// Other related classes.
friend class HeapRegionClaimer;
--- 187,197 ----
friend class G1Allocator;
// Closures used in implementation.
friend class G1ParScanThreadState;
friend class G1ParTask;
! friend class G1PLABAllocator;
friend class G1PrepareCompactClosure;
// Other related classes.
friend class HeapRegionClaimer;
*** 244,256 ****
G1RegionMappingChangedListener _listener;
// The sequence of all heap regions in the heap.
HeapRegionManager _hrm;
! // Class that handles the different kinds of allocations.
G1Allocator* _allocator;
// Statistics for each allocation context
AllocationContextStats _allocation_context_stats;
// PLAB sizing policy for survivors.
PLABStats _survivor_plab_stats;
--- 244,260 ----
G1RegionMappingChangedListener _listener;
// The sequence of all heap regions in the heap.
HeapRegionManager _hrm;
! // Handles the different kinds of allocations within a region.
G1Allocator* _allocator;
+ // Outside of GC pauses, the number of bytes used in all regions other
+ // than the current allocation region(s).
+ size_t _summary_bytes_used;
+
// Statistics for each allocation context
AllocationContextStats _allocation_context_stats;
// PLAB sizing policy for survivors.
PLABStats _survivor_plab_stats;
*** 264,289 ****
// that subsequent expansion attempts will also fail if one fails).
// Currently, it is only consulted during GC and it's reset at the
// start of each GC.
bool _expand_heap_after_alloc_failure;
- // It resets the mutator alloc region before new allocations can take place.
- void init_mutator_alloc_region();
-
- // It releases the mutator alloc region.
- void release_mutator_alloc_region();
-
- // It initializes the GC alloc regions at the start of a GC.
- void init_gc_alloc_regions(EvacuationInfo& evacuation_info);
-
- // It releases the GC alloc regions at the end of a GC.
- void release_gc_alloc_regions(uint no_of_gc_workers, EvacuationInfo& evacuation_info);
-
- // It does any cleanup that needs to be done on the GC alloc regions
- // before a Full GC.
- void abandon_gc_alloc_regions();
-
// Helper for monitoring and management support.
G1MonitoringSupport* _g1mm;
// Records whether the region at the given index is kept live by roots or
// references from the young generation.
--- 268,277 ----
*** 696,705 ****
--- 684,696 ----
G1YCType yc_type();
G1HRPrinter* hr_printer() { return &_hr_printer; }
+ // Allocates a new heap region instance.
+ HeapRegion* new_heap_region(uint hrs_index, MemRegion mr);
+
// Frees a non-humongous region by initializing its contents and
// adding it to the free list that's passed as a parameter (this is
// usually a local list which will be appended to the master free
// list later). The used bytes of freed regions are accumulated in
// pre_used. If par is true, the region's RSet will not be freed
*** 1098,1107 ****
--- 1089,1108 ----
// This should be called when we're not holding the heap lock. The
// result might be a bit inaccurate.
size_t used_unlocked() const;
size_t recalculate_used() const;
+ void increase_used(size_t bytes) { _summary_bytes_used += bytes; }
+ void set_used(size_t bytes) { _summary_bytes_used = bytes; }
+
+ void decrease_used(size_t bytes) {
+ assert(_summary_bytes_used >= bytes,
+ err_msg("invariant: _summary_bytes_used: "SIZE_FORMAT" should be >= bytes: "SIZE_FORMAT,
+ _summary_bytes_used, bytes));
+ _summary_bytes_used -= bytes;
+ }
+
// These virtual functions do the actual allocation.
// Some heaps may offer a contiguous region for shared non-blocking
// allocation, via inlined code (by exporting the address of the top and
// end fields defining the extent of the contiguous allocation region.)
// But G1CollectedHeap doesn't yet support this.
< prev index next >