< prev index next >

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

Print this page

        

@@ -37,18 +37,30 @@
 
   HeapRegion* hr = _regions.get_by_address(addr);
   return hr;
 }
 
+inline uint HeapRegionManager::addr_to_index(HeapWord* addr) const {
+  // Called routine will assert that index is in bounds (and thus address is within
+  // the maximum heap (which might be outside the current heap)).
+  return _regions.get_index_by_address(addr);
+}
+
 inline HeapRegion* HeapRegionManager::at(uint index) const {
   assert(is_available(index), "pre-condition");
   HeapRegion* hr = _regions.get_by_index(index);
   assert(hr != NULL, "sanity");
   assert(hr->hrm_index() == index, "sanity");
   return hr;
 }
 
+inline HeapRegion* HeapRegionManager::at_or_null(uint index) const {
+  assert(index <= max_length(), "index out of range");
+  HeapRegion* hr = _regions.get_by_index(index);
+  return hr;
+}
+
 inline void HeapRegionManager::insert_into_free_list(HeapRegion* hr) {
   _free_list.add_ordered(hr);
 }
 
 inline void HeapRegionManager::allocate_free_regions_starting_at(uint first, uint num_regions) {
< prev index next >