< prev index next >

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

Print this page
rev 56821 : imported patch 8220310.mut.0
rev 56822 : imported patch 8220310.mut.1
rev 56823 : imported patch 8220310.mut.2
rev 56824 : imported patch 8220310.mut.3
rev 56825 : imported patch 8220310.mut.4
rev 56834 : imported patch 8220312.stat.2
rev 56836 : imported patch 8220312.stat.4
rev 56838 : [mq]: 8220312.stat.5

*** 93,102 **** --- 93,104 ---- // The list was empty _tail = hr; _head = hr; } _last = hr; + + increase_length(hr->node_index()); } inline HeapRegion* FreeRegionList::remove_from_head_impl() { HeapRegion* result = _head; _head = result->next();
*** 143,158 **** _last = NULL; } // remove() will verify the region and check mt safety. remove(hr); return hr; } inline HeapRegion* FreeRegionList::remove_region_with_node_index(bool from_head, ! const uint requested_node_index, ! uint* allocated_node_index) { assert(UseNUMA, "Invariant"); const uint max_search_depth = G1NUMA::numa()->max_search_depth(); HeapRegion* cur; --- 145,162 ---- _last = NULL; } // remove() will verify the region and check mt safety. remove(hr); + + decrease_length(hr->node_index()); + return hr; } inline HeapRegion* FreeRegionList::remove_region_with_node_index(bool from_head, ! uint requested_node_index) { assert(UseNUMA, "Invariant"); const uint max_search_depth = G1NUMA::numa()->max_search_depth(); HeapRegion* cur;
*** 200,212 **** if (_last == cur) { _last = NULL; } remove(cur); ! if (allocated_node_index != NULL) { ! *allocated_node_index = cur->node_index(); ! } return cur; } #endif // SHARE_GC_G1_HEAPREGIONSET_INLINE_HPP --- 204,253 ---- if (_last == cur) { _last = NULL; } remove(cur); ! decrease_length(cur->node_index()); return cur; } + inline void FreeRegionList::NodeInfo::increase_length(uint node_index) { + if (node_index < _num_nodes) { + _length_of_node[node_index] += 1; + } + } + + inline void FreeRegionList::NodeInfo::decrease_length(uint node_index) { + if (node_index < _num_nodes) { + assert(_length_of_node[node_index] > 0, + "Current length %u should be greater than zero for node %u", + _length_of_node[node_index], node_index); + _length_of_node[node_index] -= 1; + } + } + + inline uint FreeRegionList::NodeInfo::length(uint node_index) const { + return _length_of_node[node_index]; + } + + inline void FreeRegionList::increase_length(uint node_index) { + if (_node_info != NULL) { + return _node_info->increase_length(node_index); + } + } + + inline void FreeRegionList::decrease_length(uint node_index) { + if (_node_info != NULL) { + return _node_info->decrease_length(node_index); + } + } + + inline uint FreeRegionList::length(uint node_index) const { + if (_node_info != NULL) { + return _node_info->length(node_index); + } else { + return 0; + } + } + #endif // SHARE_GC_G1_HEAPREGIONSET_INLINE_HPP
< prev index next >