8345661: Simplify page size alignment in code heap reservation

Reviewed-by: dholmes, thartmann
This commit is contained in:
Stefan Karlsson 2024-12-11 12:22:00 +00:00
parent 076bfa688c
commit 2382a2de96
2 changed files with 5 additions and 9 deletions

View File

@ -433,7 +433,7 @@ void CodeCache::add_heap(ReservedSpace rs, const char* name, CodeBlobType code_b
// Reserve Space
size_t size_initial = MIN2((size_t)InitialCodeCacheSize, rs.size());
size_initial = align_up(size_initial, os::vm_page_size());
size_initial = align_up(size_initial, rs.page_size());
if (!heap->reserve(rs, size_initial, CodeCacheSegmentSize)) {
vm_exit_during_initialization(err_msg("Could not reserve enough space in %s (" SIZE_FORMAT "K)",
heap->name(), size_initial/K));

View File

@ -200,6 +200,7 @@ void CodeHeap::on_code_mapping(char* base, size_t size) {
bool CodeHeap::reserve(ReservedSpace rs, size_t committed_size, size_t segment_size) {
assert(rs.size() >= committed_size, "reserved < committed");
assert(is_aligned(committed_size, rs.page_size()), "must be page aligned");
assert(segment_size >= sizeof(FreeBlock), "segment size is too small");
assert(is_power_of_2(segment_size), "segment_size must be a power of 2");
assert_locked_or_safepoint(CodeCache_lock);
@ -208,13 +209,8 @@ bool CodeHeap::reserve(ReservedSpace rs, size_t committed_size, size_t segment_s
_log2_segment_size = exact_log2(segment_size);
// Reserve and initialize space for _memory.
const size_t page_size = rs.page_size();
const size_t granularity = os::vm_allocation_granularity();
const size_t c_size = align_up(committed_size, page_size);
assert(c_size <= rs.size(), "alignment made committed size to large");
os::trace_page_sizes(_name, c_size, rs.size(), rs.base(), rs.size(), page_size);
if (!_memory.initialize(rs, c_size)) {
os::trace_page_sizes(_name, committed_size, rs.size(), rs.base(), rs.size(), rs.page_size());
if (!_memory.initialize(rs, committed_size)) {
return false;
}
@ -222,7 +218,7 @@ bool CodeHeap::reserve(ReservedSpace rs, size_t committed_size, size_t segment_s
_number_of_committed_segments = size_to_segments(_memory.committed_size());
_number_of_reserved_segments = size_to_segments(_memory.reserved_size());
assert(_number_of_reserved_segments >= _number_of_committed_segments, "just checking");
const size_t reserved_segments_alignment = MAX2(os::vm_page_size(), granularity);
const size_t reserved_segments_alignment = MAX2(os::vm_page_size(), os::vm_allocation_granularity());
const size_t reserved_segments_size = align_up(_number_of_reserved_segments, reserved_segments_alignment);
const size_t committed_segments_size = align_to_page_size(_number_of_committed_segments);