Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
devops committed Dec 13, 2024
2 parents b65b7b4 + 3c2819a commit 72420c0
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions runtime/alloc/arena.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,31 @@ void arena::initialize_semispace() {
abort();
}
//
// std::align() may modify addr and request.
//
auto *start_block = reinterpret_cast<char *>(addr);
auto *end_block = start_block + request;
//
// We allocated 2 * HYPERBLOCK_SIZE worth of address space but we're only going to use 1, aligned on a
// HYPERBLOCK_SIZE boundry. This is so we can get end of the hyperblock by setting the low bits of any
// address within the space to 1.
// We don't worry about unused address space either side of our aligned address space because there will be no
// memory mapped to it.
//
current_addr_ptr = reinterpret_cast<char *>(
std::align(HYPERBLOCK_SIZE, HYPERBLOCK_SIZE, addr, request));
//
// Release any unused address space at the start of the mmap()ed block.
//
if (size_t front_slop = current_addr_ptr - start_block) {
munmap(start_block, front_slop);
}
//
// Release any unused address space at the end of the mmap()ed block.
//
auto *end_aligned = current_addr_ptr + HYPERBLOCK_SIZE;
if (size_t back_slop = end_block - end_aligned) {
munmap(end_aligned, back_slop);
}
//
// We put a semispace id in the last byte of the hyperblock so we can identify which semispace an address
// belongs to by setting the low bits to 1 to access this id.
//
Expand Down

0 comments on commit 72420c0

Please sign in to comment.