< prev index next >
src/hotspot/share/gc/g1/heapRegionSet.inline.hpp
Print this page
*** 48,57 ****
--- 48,77 ----
hr->set_containing_set(NULL);
assert_heap_region_set(_length > 0, "pre-condition");
_length--;
}
+ inline void FreeRegionList::add_to_tail(HeapRegion* region_to_add) {
+ assert_free_region_list((length() == 0 && _head == NULL && _tail == NULL && _last == NULL) ||
+ (length() > 0 && _head != NULL && _tail != NULL && _tail->hrm_index() < region_to_add->hrm_index()),
+ "invariant");
+ // add() will verify the region and check mt safety.
+ add(region_to_add);
+
+ if (_head != NULL) {
+ // Link into list, next is already NULL, no need to set.
+ region_to_add->set_prev(_tail);
+ _tail->set_next(region_to_add);
+ _tail = region_to_add;
+ } else {
+ // Empty list, this region is now the list.
+ _head = region_to_add;
+ _tail = region_to_add;
+ }
+ increase_length(region_to_add->node_index());
+ }
+
inline void FreeRegionList::add_ordered(HeapRegion* hr) {
assert_free_region_list((length() == 0 && _head == NULL && _tail == NULL && _last == NULL) ||
(length() > 0 && _head != NULL && _tail != NULL),
"invariant");
// add() will verify the region and check mt safety.
< prev index next >