< prev index next >
src/hotspot/share/gc/g1/heapRegionManager.cpp
Print this page
rev 52611 : webrev.00
rev 52613 : webrev.01
*** 25,35 ****
--- 25,37 ----
#include "precompiled.hpp"
#include "gc/g1/g1CollectedHeap.inline.hpp"
#include "gc/g1/g1ConcurrentRefine.hpp"
#include "gc/g1/heapRegion.hpp"
#include "gc/g1/heapRegionManager.inline.hpp"
+ #include "gc/g1/heterogeneousHeapRegionManager.hpp"
#include "gc/g1/heapRegionSet.inline.hpp"
+ #include "gc/shared/collectorPolicy.hpp"
#include "memory/allocation.hpp"
#include "utilities/bitMap.inline.hpp"
class MasterFreeRegionListChecker : public HeapRegionSetChecker {
public:
*** 52,73 ****
bool is_correct_type(HeapRegion* hr) { return hr->is_free(); }
const char* get_description() { return "Free Regions"; }
};
HeapRegionManager::HeapRegionManager() :
- _regions(), _heap_mapper(NULL),
_prev_bitmap_mapper(NULL),
_next_bitmap_mapper(NULL),
_bot_mapper(NULL),
_cardtable_mapper(NULL),
_card_counts_mapper(NULL),
- _free_list("Free list", new MasterFreeRegionListChecker()),
_available_map(mtGC),
_num_committed(0),
! _allocated_heapregions_length(0)
{ }
void HeapRegionManager::initialize(G1RegionToSpaceMapper* heap_storage,
G1RegionToSpaceMapper* prev_bitmap,
G1RegionToSpaceMapper* next_bitmap,
G1RegionToSpaceMapper* bot,
G1RegionToSpaceMapper* cardtable,
--- 54,82 ----
bool is_correct_type(HeapRegion* hr) { return hr->is_free(); }
const char* get_description() { return "Free Regions"; }
};
HeapRegionManager::HeapRegionManager() :
_prev_bitmap_mapper(NULL),
_next_bitmap_mapper(NULL),
_bot_mapper(NULL),
_cardtable_mapper(NULL),
_card_counts_mapper(NULL),
_available_map(mtGC),
_num_committed(0),
! _allocated_heapregions_length(0),
! _regions(), _heap_mapper(NULL),
! _free_list("Free list", new MasterFreeRegionListChecker())
{ }
+ HeapRegionManager* HeapRegionManager::create_manager(G1CollectedHeap* heap, CollectorPolicy* policy) {
+ if (heap->is_hetero_heap()) {
+ return new HeterogeneousHeapRegionManager((uint)(policy->max_heap_byte_size() / HeapRegion::GrainBytes) /*heap size as num of regions*/);
+ }
+ return new HeapRegionManager();
+ }
+
void HeapRegionManager::initialize(G1RegionToSpaceMapper* heap_storage,
G1RegionToSpaceMapper* prev_bitmap,
G1RegionToSpaceMapper* next_bitmap,
G1RegionToSpaceMapper* bot,
G1RegionToSpaceMapper* cardtable,
< prev index next >