Skip to content

Commit b56df28

Browse files
author
Thomas Schatzl
committed
8283935: Parallel: Crash during pretouch after large pages allocation failure
Reviewed-by: kbarrett, ayang
1 parent 0a67d68 commit b56df28

File tree

3 files changed

+7
-8
lines changed

3 files changed

+7
-8
lines changed

src/hotspot/share/gc/parallel/mutableNUMASpace.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ void MutableNUMASpace::initialize(MemRegion mr,
589589

590590
// Compute chunk sizes
591591
size_t prev_page_size = page_size();
592-
set_page_size(UseLargePages ? alignment() : os::vm_page_size());
592+
set_page_size(alignment());
593593
HeapWord* rounded_bottom = align_up(bottom(), page_size());
594594
HeapWord* rounded_end = align_down(end(), page_size());
595595
size_t base_space_size_pages = pointer_delta(rounded_end, rounded_bottom, sizeof(char)) / page_size();

src/hotspot/share/gc/parallel/mutableSpace.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,8 @@ MutableSpace::~MutableSpace() {
5252
delete _mangler;
5353
}
5454

55-
void MutableSpace::numa_setup_pages(MemRegion mr, bool clear_space) {
55+
void MutableSpace::numa_setup_pages(MemRegion mr, size_t page_size, bool clear_space) {
5656
if (!mr.is_empty()) {
57-
size_t page_size = UseLargePages ? alignment() : os::vm_page_size();
5857
HeapWord *start = align_up(mr.start(), page_size);
5958
HeapWord *end = align_down(mr.end(), page_size);
6059
if (end > start) {
@@ -113,14 +112,14 @@ void MutableSpace::initialize(MemRegion mr,
113112
}
114113
assert(mr.contains(head) && mr.contains(tail), "Sanity");
115114

115+
size_t page_size = alignment();
116+
116117
if (UseNUMA) {
117-
numa_setup_pages(head, clear_space);
118-
numa_setup_pages(tail, clear_space);
118+
numa_setup_pages(head, page_size, clear_space);
119+
numa_setup_pages(tail, page_size, clear_space);
119120
}
120121

121122
if (AlwaysPreTouch) {
122-
size_t page_size = UseLargePages ? os::large_page_size() : os::vm_page_size();
123-
124123
PretouchTask::pretouch("ParallelGC PreTouch head", (char*)head.start(), (char*)head.end(),
125124
page_size, pretouch_workers);
126125

src/hotspot/share/gc/parallel/mutableSpace.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class MutableSpace: public CHeapObj<mtGC> {
6262

6363
MutableSpaceMangler* mangler() { return _mangler; }
6464

65-
void numa_setup_pages(MemRegion mr, bool clear_space);
65+
void numa_setup_pages(MemRegion mr, size_t page_size, bool clear_space);
6666

6767
void set_last_setup_region(MemRegion mr) { _last_setup_region = mr; }
6868
MemRegion last_setup_region() const { return _last_setup_region; }

0 commit comments

Comments
 (0)