diff --git a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp index f7d65771034..46616cb32be 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp @@ -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(); diff --git a/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp b/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp index 2dd5f161d1d..ceba74d0544 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp @@ -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");