< 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 >