mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
[ruby/mmtk] Exit with error message if MMTK_HEAP_MODE is invalid
c8b1f4c156
This commit is contained in:
parent
f627e05d14
commit
2bcbc80fa2
2 changed files with 17 additions and 8 deletions
|
@ -77,6 +77,20 @@ fn mmtk_builder_default_parse_heap_max() -> usize {
|
||||||
size
|
size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn mmtk_builder_default_parse_heap_mode(heap_min: usize, heap_max: usize) -> GCTriggerSelector {
|
||||||
|
let heap_mode_str = std::env::var("MMTK_HEAP_MODE")
|
||||||
|
.unwrap_or("dynamic".to_string());
|
||||||
|
|
||||||
|
match heap_mode_str.as_str() {
|
||||||
|
"fixed" => GCTriggerSelector::FixedHeapSize(heap_max),
|
||||||
|
"dynamic" => GCTriggerSelector::DynamicHeapSize(heap_min, heap_max),
|
||||||
|
_ => {
|
||||||
|
eprintln!("[FATAL] Invalid MMTK_HEAP_MODE {}", heap_mode_str);
|
||||||
|
std::process::exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn mmtk_builder_default() -> *mut MMTKBuilder {
|
pub extern "C" fn mmtk_builder_default() -> *mut MMTKBuilder {
|
||||||
let mut builder = MMTKBuilder::new_no_env_vars();
|
let mut builder = MMTKBuilder::new_no_env_vars();
|
||||||
|
@ -96,10 +110,7 @@ pub extern "C" fn mmtk_builder_default() -> *mut MMTKBuilder {
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mmtk_mode = match std::env::var("MMTK_HEAP_MODE") {
|
let heap_mode = mmtk_builder_default_parse_heap_mode(heap_min, heap_max);
|
||||||
Ok(mode) if (mode == "fixed") => GCTriggerSelector::FixedHeapSize(heap_max),
|
|
||||||
Ok(_) | Err(_) => GCTriggerSelector::DynamicHeapSize(heap_min, heap_max)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Parse the env var, if it's not found set the plan name to MarkSweep
|
// Parse the env var, if it's not found set the plan name to MarkSweep
|
||||||
let plan_name = std::env::var("MMTK_PLAN")
|
let plan_name = std::env::var("MMTK_PLAN")
|
||||||
|
@ -111,9 +122,7 @@ pub extern "C" fn mmtk_builder_default() -> *mut MMTKBuilder {
|
||||||
|
|
||||||
builder.options.plan.set(plan_selector);
|
builder.options.plan.set(plan_selector);
|
||||||
|
|
||||||
// Between 1MiB and 500MiB
|
builder.options.gc_trigger.set(heap_mode);
|
||||||
builder.options.gc_trigger.set(mmtk_mode);
|
|
||||||
|
|
||||||
|
|
||||||
Box::into_raw(Box::new(builder))
|
Box::into_raw(Box::new(builder))
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
require_relative "helper"
|
require_relative "helper"
|
||||||
module MMTk
|
module MMTk
|
||||||
class TestConfiguration < TestCase
|
class TestConfiguration < TestCase
|
||||||
%w(MMTK_THREADS MMTK_HEAP_MIN MMTK_HEAP_MAX).each do |var|
|
%w(MMTK_THREADS MMTK_HEAP_MIN MMTK_HEAP_MAX MMTK_HEAP_MODE).each do |var|
|
||||||
define_method(:"test_invalid_#{var}") do
|
define_method(:"test_invalid_#{var}") do
|
||||||
exit_code = assert_in_out_err(
|
exit_code = assert_in_out_err(
|
||||||
[{ var => "foobar" }, "--"],
|
[{ var => "foobar" }, "--"],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue