Skip to content

Commit 4a24d55

Browse files
committed
Exit with error message if MMTK_HEAP_MAX is invalid
1 parent 1d2f7b9 commit 4a24d55

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

gc/mmtk/src/api.rs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,19 @@ fn mmtk_builder_default_parse_heap_min() -> usize {
6464
size
6565
}
6666

67+
fn mmtk_builder_default_parse_heap_max() -> usize {
68+
let heap_max_str = std::env::var("MMTK_HEAP_MAX")
69+
.unwrap_or(default_heap_max().to_string());
70+
71+
let size = parse_capacity(&heap_max_str, 0);
72+
if size == 0 {
73+
eprintln!("[FATAL] Invalid MMTK_HEAP_MAX {}", heap_max_str);
74+
std::process::exit(1);
75+
}
76+
77+
size
78+
}
79+
6780
#[no_mangle]
6881
pub extern "C" fn mmtk_builder_default() -> *mut MMTKBuilder {
6982
let mut builder = MMTKBuilder::new_no_env_vars();
@@ -76,25 +89,16 @@ pub extern "C" fn mmtk_builder_default() -> *mut MMTKBuilder {
7689

7790
let heap_min = mmtk_builder_default_parse_heap_min();
7891

79-
let mmtk_heap_max = match std::env::var("MMTK_HEAP_MAX") {
80-
Ok(max) => {
81-
let capa = parse_capacity(&max, default_heap_max());
82-
if capa == default_heap_max() {
83-
eprintln!("MMTK_HEAP_MAX: value ({}) unusable, Using default.", max)
84-
};
85-
capa
86-
},
87-
Err(_) => default_heap_max()
88-
};
92+
let heap_max = mmtk_builder_default_parse_heap_max();
8993

90-
if heap_min >= mmtk_heap_max {
91-
eprintln!("[FATAL] MMTK_HEAP_MIN({}) >= MMTK_HEAP_MAX({})", heap_min, mmtk_heap_max);
94+
if heap_min >= heap_max {
95+
eprintln!("[FATAL] MMTK_HEAP_MIN({}) >= MMTK_HEAP_MAX({})", heap_min, heap_max);
9296
std::process::exit(1);
9397
}
9498

9599
let mmtk_mode = match std::env::var("MMTK_HEAP_MODE") {
96-
Ok(mode) if (mode == "fixed") => GCTriggerSelector::FixedHeapSize(mmtk_heap_max),
97-
Ok(_) | Err(_) => GCTriggerSelector::DynamicHeapSize(heap_min, mmtk_heap_max)
100+
Ok(mode) if (mode == "fixed") => GCTriggerSelector::FixedHeapSize(heap_max),
101+
Ok(_) | Err(_) => GCTriggerSelector::DynamicHeapSize(heap_min, heap_max)
98102
};
99103

100104
// Parse the env var, if it's not found set the plan name to MarkSweep

0 commit comments

Comments
 (0)