< prev index next >
src/share/vm/gc/g1/heapRegionManager.cpp
Print this page
rev 12309 : [mq]: 8169703-crash-with-alwayspretouch
@@ -284,11 +284,11 @@
// committed, expand_at that index.
uint curr = max_length() - 1;
while (true) {
HeapRegion *hr = _regions.get_by_index(curr);
if (hr == NULL) {
- uint res = expand_at(curr, 1);
+ uint res = expand_at(curr, 1, NULL);
if (res == 1) {
*expanded = true;
return curr;
}
} else {
@@ -302,21 +302,21 @@
}
curr--;
}
}
-bool HeapRegionManager::allocate_containing_regions(MemRegion range, size_t* commit_count) {
+bool HeapRegionManager::allocate_containing_regions(MemRegion range, size_t* commit_count, WorkGang* pretouch_workers) {
size_t commits = 0;
uint start_index = (uint)_regions.get_index_by_address(range.start());
uint last_index = (uint)_regions.get_index_by_address(range.last());
// Ensure that each G1 region in the range is free, returning false if not.
// Commit those that are not yet available, and keep count.
for (uint curr_index = start_index; curr_index <= last_index; curr_index++) {
if (!is_available(curr_index)) {
commits++;
- expand_at(curr_index, 1);
+ expand_at(curr_index, 1, pretouch_workers);
}
HeapRegion* curr_region = _regions.get_by_index(curr_index);
if (!curr_region->is_free()) {
return false;
}
< prev index next >