8265239: Shenandoah: Shenandoah heap region count could be off by 1

Backport-of: ff5bb8cf693c58a14063a351f535e3a55e51e8db
This commit is contained in:
Zhengyu Gu 2021-05-12 19:12:07 +00:00
parent 1116b75741
commit 319621c31c
2 changed files with 2 additions and 1 deletions

View File

@ -151,6 +151,7 @@ jint ShenandoahHeap::initialize() {
Universe::check_alignment(init_byte_size, reg_size_bytes, "Shenandoah heap");
_num_regions = ShenandoahHeapRegion::region_count();
assert(_num_regions == (max_byte_size / reg_size_bytes), "Must match");
// Now we know the number of regions, initialize the heuristics.
initialize_heuristics();

View File

@ -573,7 +573,7 @@ void ShenandoahHeapRegion::setup_sizes(size_t max_heap_size) {
RegionSizeBytesMask = RegionSizeBytes - 1;
guarantee(RegionCount == 0, "we should only set it once");
RegionCount = max_heap_size / RegionSizeBytes;
RegionCount = align_up(max_heap_size, RegionSizeBytes) / RegionSizeBytes;
guarantee(RegionCount >= MIN_NUM_REGIONS, "Should have at least minimum regions");
guarantee(HumongousThresholdWords == 0, "we should only set it once");