diff --git a/src/hotspot/share/code/codeCache.cpp b/src/hotspot/share/code/codeCache.cpp index f0769e240dd..a0a02c25158 100644 --- a/src/hotspot/share/code/codeCache.cpp +++ b/src/hotspot/share/code/codeCache.cpp @@ -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)); diff --git a/src/hotspot/share/memory/heap.cpp b/src/hotspot/share/memory/heap.cpp index 92a376defa5..f88f5c4dc12 100644 --- a/src/hotspot/share/memory/heap.cpp +++ b/src/hotspot/share/memory/heap.cpp @@ -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);