< prev index next >

src/hotspot/share/gc/g1/heapRegionManager.cpp

Print this page
rev 51649 : version 1
rev 52017 : All changes for G1 GC moved from 'combined' repo folder
rev 52487 : Worked on comments from Sangheon, Stefan
rev 52489 : minor changes
rev 52493 : Changing class name
rev 52631 : Merge

*** 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,
*** 512,522 **** verify(); } #endif // PRODUCT HeapRegionClaimer::HeapRegionClaimer(uint n_workers) : ! _n_workers(n_workers), _n_regions(G1CollectedHeap::heap()->_hrm._allocated_heapregions_length), _claims(NULL) { assert(n_workers > 0, "Need at least one worker."); uint* new_claims = NEW_C_HEAP_ARRAY(uint, _n_regions, mtGC); memset(new_claims, Unclaimed, sizeof(*_claims) * _n_regions); _claims = new_claims; } --- 521,531 ---- verify(); } #endif // PRODUCT HeapRegionClaimer::HeapRegionClaimer(uint n_workers) : ! _n_workers(n_workers), _n_regions(G1CollectedHeap::heap()->_hrm->_allocated_heapregions_length), _claims(NULL) { assert(n_workers > 0, "Need at least one worker."); uint* new_claims = NEW_C_HEAP_ARRAY(uint, _n_regions, mtGC); memset(new_claims, Unclaimed, sizeof(*_claims) * _n_regions); _claims = new_claims; }
< prev index next >