Skip to content

Commit 1fc01a2

Browse files
committed
Cleanup in zPhysicalMemoryManager.cpp
1 parent 8fb437e commit 1fc01a2

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/hotspot/share/gc/z/zPhysicalMemoryManager.cpp

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,21 +97,21 @@ void ZPhysicalMemoryManager::try_enable_uncommit(size_t min_capacity, size_t max
9797
void ZPhysicalMemoryManager::alloc(zoffset* pmem, size_t size, int numa_id) {
9898
assert(is_aligned(size, ZGranuleSize), "Invalid size");
9999

100+
size_t to_alloc = size;
100101
size_t current_granule = 0;
101102

102-
while (size > 0) {
103-
const ZMemoryRange range = _managers.get(numa_id).alloc_low_address_at_most(size);
103+
while (to_alloc > 0) {
104+
const ZMemoryRange range = _managers.get(numa_id).alloc_low_address_at_most(to_alloc);
104105
assert(!range.is_null(), "Allocation should never fail");
105-
size -= range.size();
106+
to_alloc -= range.size();
106107

107-
size_t num_granules = range.size_in_granules();
108+
const size_t num_granules = range.size_in_granules();
108109
for (size_t i = 0; i < num_granules; i++) {
109110
pmem[current_granule + i] = range.start() + (ZGranuleSize * i);
110111
}
111112

112113
current_granule += num_granules;
113114
}
114-
115115
}
116116

117117
template<typename ReturnType>
@@ -132,32 +132,38 @@ struct IterateInvoker<void> {
132132
};
133133

134134
template<typename Function>
135-
bool for_each_segment_apply(const zoffset* pmem, size_t num_granules, Function function) {
135+
bool for_each_segment_apply(const zoffset* pmem, size_t size, Function function) {
136136
IterateInvoker<decltype(function(zoffset{}, size_t{}))> invoker;
137+
const size_t num_granules = size >> ZGranuleSizeShift;
138+
137139
for (size_t i = 0; i < num_granules; i++) {
138140
const size_t start_i = i;
139141
const zoffset start = pmem[i];
142+
140143
while (i + 1 < num_granules && pmem[i] + ZGranuleSize == pmem[i + 1]) {
141144
i++;
142145
}
143-
if (!invoker(function, start, (i - start_i + 1) * ZGranuleSize)) {
146+
147+
const size_t segment_size = (i - start_i + 1) * ZGranuleSize;
148+
if (!invoker(function, start, segment_size)) {
144149
return false;
145150
}
146151
}
152+
147153
return true;
148154
}
149155

150156
void ZPhysicalMemoryManager::free(const zoffset* pmem, size_t size, int numa_id) {
151157
// Free segments
152-
for_each_segment_apply(pmem, size >> ZGranuleSizeShift, [&](zoffset segment_start, size_t segment_size) {
158+
for_each_segment_apply(pmem, size, [&](zoffset segment_start, size_t segment_size) {
153159
_managers.get(numa_id).free(segment_start, segment_size);
154160
});
155161
}
156162

157163
size_t ZPhysicalMemoryManager::commit(const zoffset* pmem, size_t size, int numa_id) {
158164
size_t total_committed = 0;
159165
// Commit segments
160-
for_each_segment_apply(pmem, size >> ZGranuleSizeShift, [&](zoffset segment_start, size_t segment_size) {
166+
for_each_segment_apply(pmem, size, [&](zoffset segment_start, size_t segment_size) {
161167
// Commit segment
162168
#ifdef LINUX
163169
const size_t committed = _backing.commit(segment_start, segment_size, numa_id);
@@ -181,7 +187,7 @@ size_t ZPhysicalMemoryManager::commit(const zoffset* pmem, size_t size, int numa
181187
size_t ZPhysicalMemoryManager::uncommit(const zoffset* pmem, size_t size) {
182188
size_t total_uncommitted = 0;
183189
// Uncommit segments
184-
for_each_segment_apply(pmem, size >> ZGranuleSizeShift, [&](zoffset segment_start, size_t segment_size) {
190+
for_each_segment_apply(pmem, size, [&](zoffset segment_start, size_t segment_size) {
185191
// Uncommit segment
186192
const size_t uncommitted = _backing.uncommit(segment_start, segment_size);
187193
total_uncommitted += uncommitted;
@@ -202,7 +208,7 @@ void ZPhysicalMemoryManager::map(zoffset offset, const zoffset* pmem, size_t siz
202208
const zaddress_unsafe addr = ZOffset::address_unsafe(offset);
203209

204210
size_t mapped = 0;
205-
for_each_segment_apply(pmem, size >> ZGranuleSizeShift, [&](zoffset segment_start, size_t segment_size) {
211+
for_each_segment_apply(pmem, size, [&](zoffset segment_start, size_t segment_size) {
206212
_backing.map(addr + mapped, segment_size, segment_start);
207213
mapped += segment_size;
208214
});
@@ -222,8 +228,9 @@ void ZPhysicalMemoryManager::unmap(zoffset offset, const zoffset* /* ignored unt
222228

223229
size_t ZPhysicalMemoryManager::count_segments(const zoffset* pmem, size_t size) {
224230
size_t count = 0;
225-
for_each_segment_apply(pmem, size >> ZGranuleSizeShift, [&](zoffset, size_t) {
231+
for_each_segment_apply(pmem, size, [&](zoffset, size_t) {
226232
count++;
227233
});
234+
228235
return count;
229236
}

0 commit comments

Comments
 (0)