diff options
author | Peter Zhu <[email protected]> | 2025-01-13 14:08:27 -0500 |
---|---|---|
committer | git <[email protected]> | 2025-01-13 20:08:19 +0000 |
commit | 3b9b41d046ad032be73c253b0ebc17eb7de8b788 (patch) | |
tree | ec7b0538ba8095259cfd325699ba2c0fb06a4aa9 /gc/mmtk | |
parent | 7c0b92a1c64d39d4861fb7b46db7efdff3bbcf65 (diff) |
[ruby/mmtk] Exit with error message if MMTK_THREADS is invalid
https://github.com/ruby/mmtk/commit/5c5c454f65
Diffstat (limited to 'gc/mmtk')
-rw-r--r-- | gc/mmtk/src/api.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/gc/mmtk/src/api.rs b/gc/mmtk/src/api.rs index ae626a4a0f..bfa1eefa8e 100644 --- a/gc/mmtk/src/api.rs +++ b/gc/mmtk/src/api.rs @@ -37,6 +37,18 @@ pub extern "C" fn mmtk_is_reachable(object: ObjectReference) -> bool { // =============== Bootup =============== +fn mmtk_builder_default_parse_threads() -> usize { + let threads_str = std::env::var("MMTK_THREADS") + .unwrap_or("0".to_string()); + + threads_str + .parse::<usize>() + .unwrap_or_else(|_err| { + eprintln!("[FATAL] Invalid MMTK_THREADS {}", threads_str); + std::process::exit(1); + }) +} + #[no_mangle] pub extern "C" fn mmtk_builder_default() -> *mut MMTKBuilder { let mut builder = MMTKBuilder::new_no_env_vars(); @@ -44,10 +56,10 @@ pub extern "C" fn mmtk_builder_default() -> *mut MMTKBuilder { const DEFAULT_HEAP_MIN: usize = 1 << 20; - let mmtk_threads: usize = std::env::var("MMTK_THREADS") - .unwrap_or("0".to_string()) - .parse::<usize>() - .unwrap_or(0); + let threads = mmtk_builder_default_parse_threads(); + if threads > 0 { + builder.options.threads.set(threads); + } let mut mmtk_heap_min = match std::env::var("MMTK_HEAP_MIN") { Ok(min) => { @@ -95,9 +107,6 @@ pub extern "C" fn mmtk_builder_default() -> *mut MMTKBuilder { // Between 1MiB and 500MiB builder.options.gc_trigger.set(mmtk_mode); - if mmtk_threads > 0 { - builder.options.threads.set(mmtk_threads); - } Box::into_raw(Box::new(builder)) } |