< prev index next >

src/hotspot/share/gc/g1/heapRegionManager.inline.hpp

Print this page
rev 51979 : imported patch 8071913-almost-done


  30 #include "gc/g1/heapRegionSet.inline.hpp"
  31 
  32 inline HeapRegion* HeapRegionManager::addr_to_region(HeapWord* addr) const {
  33   assert(addr < heap_end(),
  34         "addr: " PTR_FORMAT " end: " PTR_FORMAT, p2i(addr), p2i(heap_end()));
  35   assert(addr >= heap_bottom(),
  36         "addr: " PTR_FORMAT " bottom: " PTR_FORMAT, p2i(addr), p2i(heap_bottom()));
  37 
  38   HeapRegion* hr = _regions.get_by_address(addr);
  39   return hr;
  40 }
  41 
  42 inline HeapRegion* HeapRegionManager::at(uint index) const {
  43   assert(is_available(index), "pre-condition");
  44   HeapRegion* hr = _regions.get_by_index(index);
  45   assert(hr != NULL, "sanity");
  46   assert(hr->hrm_index() == index, "sanity");
  47   return hr;
  48 }
  49 










  50 inline HeapRegion* HeapRegionManager::next_region_in_humongous(HeapRegion* hr) const {
  51   uint index = hr->hrm_index();
  52   assert(is_available(index), "pre-condition");
  53   assert(hr->is_humongous(), "next_region_in_humongous should only be called for a humongous region.");
  54   index++;
  55   if (index < max_length() && is_available(index) && at(index)->is_continues_humongous()) {
  56     return at(index);
  57   } else {
  58     return NULL;
  59   }
  60 }
  61 
  62 inline void HeapRegionManager::insert_into_free_list(HeapRegion* hr) {
  63   _free_list.add_ordered(hr);
  64 }
  65 
  66 inline void HeapRegionManager::allocate_free_regions_starting_at(uint first, uint num_regions) {
  67   _free_list.remove_starting_at(at(first), num_regions);
  68 }
  69 


  30 #include "gc/g1/heapRegionSet.inline.hpp"
  31 
  32 inline HeapRegion* HeapRegionManager::addr_to_region(HeapWord* addr) const {
  33   assert(addr < heap_end(),
  34         "addr: " PTR_FORMAT " end: " PTR_FORMAT, p2i(addr), p2i(heap_end()));
  35   assert(addr >= heap_bottom(),
  36         "addr: " PTR_FORMAT " bottom: " PTR_FORMAT, p2i(addr), p2i(heap_bottom()));
  37 
  38   HeapRegion* hr = _regions.get_by_address(addr);
  39   return hr;
  40 }
  41 
  42 inline HeapRegion* HeapRegionManager::at(uint index) const {
  43   assert(is_available(index), "pre-condition");
  44   HeapRegion* hr = _regions.get_by_index(index);
  45   assert(hr != NULL, "sanity");
  46   assert(hr->hrm_index() == index, "sanity");
  47   return hr;
  48 }
  49 
  50 inline HeapRegion* HeapRegionManager::at_or_null(uint index) const {
  51   if (!is_available(index)) {
  52     return NULL;
  53   }
  54   HeapRegion* hr = _regions.get_by_index(index);
  55   assert(hr != NULL, "All available regions must have a HeapRegion but index %u has not.", index);
  56   assert(hr->hrm_index() == index, "sanity");
  57   return hr;
  58 }
  59 
  60 inline HeapRegion* HeapRegionManager::next_region_in_humongous(HeapRegion* hr) const {
  61   uint index = hr->hrm_index();
  62   assert(is_available(index), "pre-condition");
  63   assert(hr->is_humongous(), "next_region_in_humongous should only be called for a humongous region.");
  64   index++;
  65   if (index < max_length() && is_available(index) && at(index)->is_continues_humongous()) {
  66     return at(index);
  67   } else {
  68     return NULL;
  69   }
  70 }
  71 
  72 inline void HeapRegionManager::insert_into_free_list(HeapRegion* hr) {
  73   _free_list.add_ordered(hr);
  74 }
  75 
  76 inline void HeapRegionManager::allocate_free_regions_starting_at(uint first, uint num_regions) {
  77   _free_list.remove_starting_at(at(first), num_regions);
  78 }
  79 
< prev index next >