< prev index next >
src/hotspot/share/gc/g1/g1CollectedHeap.hpp
Print this page
rev 51649 : version 1
rev 51652 : Added support for eager mixed collection of evacuation failure regions
rev 51878 : Minor changes
rev 52017 : All changes for G1 GC moved from 'combined' repo folder
rev 52487 : Worked on comments from Sangheon, Stefan
rev 52488 : Merge
rev 52493 : Changing class name
@@ -41,10 +41,11 @@
#include "gc/g1/g1InCSetState.hpp"
#include "gc/g1/g1MonitoringSupport.hpp"
#include "gc/g1/g1SurvivorRegions.hpp"
#include "gc/g1/g1YCTypes.hpp"
#include "gc/g1/heapRegionManager.hpp"
+#include "gc/g1/heterogeneousHeapRegionManager.hpp"
#include "gc/g1/heapRegionSet.hpp"
#include "gc/shared/barrierSet.hpp"
#include "gc/shared/collectedHeap.hpp"
#include "gc/shared/gcHeapSummary.hpp"
#include "gc/shared/plab.hpp"
@@ -192,11 +193,14 @@
// Callback for region mapping changed events.
G1RegionMappingChangedListener _listener;
// The sequence of all heap regions in the heap.
- HeapRegionManager _hrm;
+ HeapRegionManager* _hrm;
+
+ // is the heap on heterogenous memory?
+ bool _is_hetero_heap;
// Manages all allocations with regions except humongous object allocations.
G1Allocator* _allocator;
// Manages all heap verification.
@@ -950,14 +954,19 @@
G1CollectorState* collector_state() { return &_collector_state; }
// The current policy object for the collector.
G1Policy* g1_policy() const { return _g1_policy; }
+ HeapRegionManager* hrm() const { return _hrm; }
+
+ bool is_hetero_heap() const { return _is_hetero_heap; }
+
const G1CollectionSet* collection_set() const { return &_collection_set; }
G1CollectionSet* collection_set() { return &_collection_set; }
virtual CollectorPolicy* collector_policy() const;
+ virtual G1CollectorPolicy* g1_collector_policy() const;
virtual SoftRefPolicy* soft_ref_policy();
virtual void initialize_serviceability();
virtual MemoryUsage memory_usage();
@@ -1002,37 +1011,40 @@
// 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.
virtual bool is_maximal_no_gc() const {
- return _hrm.available() == 0;
+ return _hrm->available() == 0;
}
// Returns whether there are any regions left in the heap for allocation.
bool has_regions_left_for_allocation() const {
return !is_maximal_no_gc() || num_free_regions() != 0;
}
// The current number of regions in the heap.
- uint num_regions() const { return _hrm.length(); }
+ uint num_regions() const { return _hrm->length(); }
// The max number of regions in the heap.
- uint max_regions() const { return _hrm.max_length(); }
+ uint max_regions() const { return _hrm->max_length(); }
+
+ // Max number of regions that can be comitted.
+ uint max_expandable_regions() const { return _hrm->max_expandable_length(); }
// The number of regions that are completely free.
- uint num_free_regions() const { return _hrm.num_free_regions(); }
+ uint num_free_regions() const { return _hrm->num_free_regions(); }
MemoryUsage get_auxiliary_data_memory_usage() const {
- return _hrm.get_auxiliary_data_memory_usage();
+ return _hrm->get_auxiliary_data_memory_usage();
}
// The number of regions that are not completely free.
uint num_used_regions() const { return num_regions() - num_free_regions(); }
#ifdef ASSERT
bool is_on_master_free_list(HeapRegion* hr) {
- return _hrm.is_free(hr);
+ return _hrm->is_free(hr);
}
#endif // ASSERT
inline void old_set_add(HeapRegion* hr);
inline void old_set_remove(HeapRegion* hr);
@@ -1085,17 +1097,17 @@
inline InCSetState in_cset_state(const oop obj);
// Return "TRUE" iff the given object address is in the reserved
// region of g1.
bool is_in_g1_reserved(const void* p) const {
- return _hrm.reserved().contains(p);
+ return _hrm->reserved().contains(p);
}
// Returns a MemRegion that corresponds to the space that has been
// reserved for the heap
MemRegion g1_reserved() const {
- return _hrm.reserved();
+ return _hrm->reserved();
}
virtual bool is_in_closed_subset(const void* p) const;
G1HotCardCache* g1_hot_card_cache() const { return _hot_card_cache; }
@@ -1217,10 +1229,13 @@
static size_t humongous_obj_size_in_regions(size_t word_size);
// Print the maximum heap capacity.
virtual size_t max_capacity() const;
+ // Return the size of reserved memory. Returns different value than max_capacity() when AllocateOldGenAt is used.
+ virtual size_t max_reserved_capacity() const;
+
virtual jlong millis_since_last_gc();
// Convenience function to be used in situations where the heap type can be
// asserted to be this type.
< prev index next >