< prev index next >
src/share/vm/gc/shenandoah/shenandoahHeapRegion.cpp
Print this page
@@ -277,23 +277,34 @@
void ShenandoahHeapRegion::setup_heap_region_size(size_t initial_heap_size, size_t max_heap_size) {
uintx region_size;
if (FLAG_IS_DEFAULT(ShenandoahHeapRegionSize)) {
if (ShenandoahMinRegionSize > initial_heap_size / MIN_NUM_REGIONS) {
- vm_exit_during_initialization("Invalid -XX:ShenandoahMinRegionSize option");
+ err_msg message("Initial heap size (" SIZE_FORMAT "K) is too low to afford the minimum number "
+ "of regions (" SIZE_FORMAT ") of minimum region size (" SIZE_FORMAT "K).",
+ initial_heap_size/K, MIN_NUM_REGIONS, ShenandoahMinRegionSize/K);
+ vm_exit_during_initialization("Invalid -XX:ShenandoahMinRegionSize option", message);
}
if (ShenandoahMinRegionSize < MIN_REGION_SIZE) {
- vm_exit_during_initialization("Invalid -XX:ShenandoahMinRegionSize option");
+ err_msg message("" SIZE_FORMAT "K should not be lower than minimum region size (" SIZE_FORMAT "K).",
+ ShenandoahMinRegionSize/K, MIN_REGION_SIZE/K);
+ vm_exit_during_initialization("Invalid -XX:ShenandoahMinRegionSize option", message);
}
if (ShenandoahMinRegionSize < MinTLABSize) {
- vm_exit_during_initialization("Invalid -XX:ShenandoahMinRegionSize option");
+ err_msg message("" SIZE_FORMAT "K should not be lower than TLAB size size (" SIZE_FORMAT "K).",
+ ShenandoahMinRegionSize/K, MinTLABSize/K);
+ vm_exit_during_initialization("Invalid -XX:ShenandoahMinRegionSize option", message);
}
if (ShenandoahMaxRegionSize < MIN_REGION_SIZE) {
- vm_exit_during_initialization("Invalid -XX:ShenandoahMaxRegionSize option");
+ err_msg message("" SIZE_FORMAT "K should not be lower than min region size (" SIZE_FORMAT "K).",
+ ShenandoahMaxRegionSize/K, MIN_REGION_SIZE/K);
+ vm_exit_during_initialization("Invalid -XX:ShenandoahMaxRegionSize option", message);
}
if (ShenandoahMinRegionSize > ShenandoahMaxRegionSize) {
- vm_exit_during_initialization("Invalid -XX:ShenandoahMinRegionSize or -XX:ShenandoahMaxRegionSize");
+ err_msg message("Minimum (" SIZE_FORMAT "K) should be larger than maximum (" SIZE_FORMAT "K).",
+ ShenandoahMinRegionSize/K, ShenandoahMaxRegionSize/K);
+ vm_exit_during_initialization("Invalid -XX:ShenandoahMinRegionSize or -XX:ShenandoahMaxRegionSize", message);
}
size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
region_size = MAX2(average_heap_size / ShenandoahTargetNumRegions,
ShenandoahMinRegionSize);
@@ -301,14 +312,19 @@
region_size = MAX2(ShenandoahMinRegionSize, region_size);
region_size = MIN2(ShenandoahMaxRegionSize, region_size);
} else {
if (ShenandoahHeapRegionSize > initial_heap_size / MIN_NUM_REGIONS) {
- vm_exit_during_initialization("Invalid -XX:ShenandoahHeapRegionSize option");
+ err_msg message("Initial heap size (" SIZE_FORMAT "K) is too low to afford the minimum number "
+ "of regions (" SIZE_FORMAT ") of requested size (" SIZE_FORMAT "K).",
+ initial_heap_size/K, MIN_NUM_REGIONS, ShenandoahHeapRegionSize/K);
+ vm_exit_during_initialization("Invalid -XX:ShenandoahHeapRegionSize option", message);
}
if (ShenandoahHeapRegionSize < MIN_REGION_SIZE) {
- vm_exit_during_initialization("Invalid -XX:ShenandoahHeapRegionSize option");
+ err_msg message("" SIZE_FORMAT " should not be lower than min region size (" SIZE_FORMAT "K).",
+ ShenandoahHeapRegionSize/K, MIN_REGION_SIZE/K);
+ vm_exit_during_initialization("Invalid -XX:ShenandoahHeapRegionSize option", message);
}
region_size = ShenandoahHeapRegionSize;
}
// Make sure region size is at least one large page, if enabled.
< prev index next >