< prev index next >

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

Print this page




 594   memset(new_claims, Unclaimed, sizeof(*_claims) * _n_regions);
 595   _claims = new_claims;
 596 }
 597 
 598 HeapRegionClaimer::~HeapRegionClaimer() {
 599   FREE_C_HEAP_ARRAY(uint, _claims);
 600 }
 601 
 602 uint HeapRegionClaimer::offset_for_worker(uint worker_id) const {
 603   assert(worker_id < _n_workers, "Invalid worker_id.");
 604   return _n_regions * worker_id / _n_workers;
 605 }
 606 
 607 bool HeapRegionClaimer::is_region_claimed(uint region_index) const {
 608   assert(region_index < _n_regions, "Invalid index.");
 609   return _claims[region_index] == Claimed;
 610 }
 611 
 612 bool HeapRegionClaimer::claim_region(uint region_index) {
 613   assert(region_index < _n_regions, "Invalid index.");
 614   uint old_val = Atomic::cmpxchg(Claimed, &_claims[region_index], Unclaimed);
 615   return old_val == Unclaimed;
 616 }


 594   memset(new_claims, Unclaimed, sizeof(*_claims) * _n_regions);
 595   _claims = new_claims;
 596 }
 597 
 598 HeapRegionClaimer::~HeapRegionClaimer() {
 599   FREE_C_HEAP_ARRAY(uint, _claims);
 600 }
 601 
 602 uint HeapRegionClaimer::offset_for_worker(uint worker_id) const {
 603   assert(worker_id < _n_workers, "Invalid worker_id.");
 604   return _n_regions * worker_id / _n_workers;
 605 }
 606 
 607 bool HeapRegionClaimer::is_region_claimed(uint region_index) const {
 608   assert(region_index < _n_regions, "Invalid index.");
 609   return _claims[region_index] == Claimed;
 610 }
 611 
 612 bool HeapRegionClaimer::claim_region(uint region_index) {
 613   assert(region_index < _n_regions, "Invalid index.");
 614   uint old_val = Atomic::cmpxchg(&_claims[region_index], Unclaimed, Claimed);
 615   return old_val == Unclaimed;
 616 }
< prev index next >