Print this page
8236073: G1: Use SoftMaxHeapSize to guide GC heuristics


  23  */
  24 
  25 #ifndef SHARE_GC_G1_HEAPREGIONMANAGER_INLINE_HPP
  26 #define SHARE_GC_G1_HEAPREGIONMANAGER_INLINE_HPP
  27 
  28 #include "gc/g1/heapRegion.hpp"
  29 #include "gc/g1/heapRegionManager.hpp"
  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.");


  23  */
  24 
  25 #ifndef SHARE_GC_G1_HEAPREGIONMANAGER_INLINE_HPP
  26 #define SHARE_GC_G1_HEAPREGIONMANAGER_INLINE_HPP
  27 
  28 #include "gc/g1/heapRegion.hpp"
  29 #include "gc/g1/heapRegionManager.hpp"
  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) || is_in_concurrent_resizing(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.");