YJIT: print warning when disasm options used without a dev build (#9744)

* YJIT: print warning when disasm options used without a dev build

I was confused for a few minutes the other way then
--yjit-dump-disasm printed nothing, so I figured this would be
useful for end-users (and future me).

* Fix lone extraneous space
This commit is contained in:
Maxime Chevalier-Boisvert 2024-01-29 16:17:12 -05:00 committed by GitHub
parent 32bbf47500
commit bc10b958d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -228,21 +228,31 @@ pub fn parse_option(str_ptr: *const std::os::raw::c_char) -> Option<()> {
_ => return None,
},
("dump-disasm", _) => match opt_val {
"" => unsafe { OPTIONS.dump_disasm = Some(DumpDisasm::Stdout) },
directory => {
let path = format!("{directory}/yjit_{}.log", std::process::id());
match File::options().create(true).append(true).open(&path) {
Ok(_) => {
eprintln!("YJIT disasm dump: {path}");
unsafe { OPTIONS.dump_disasm = Some(DumpDisasm::File(path)) }
("dump-disasm", _) => {
if !cfg!(feature = "disasm") {
eprintln!("WARNING: the {} option is only available when YJIT is built in dev mode, i.e. ./configure --enable-yjit=dev", opt_name);
}
match opt_val {
"" => unsafe { OPTIONS.dump_disasm = Some(DumpDisasm::Stdout) },
directory => {
let path = format!("{directory}/yjit_{}.log", std::process::id());
match File::options().create(true).append(true).open(&path) {
Ok(_) => {
eprintln!("YJIT disasm dump: {path}");
unsafe { OPTIONS.dump_disasm = Some(DumpDisasm::File(path)) }
}
Err(err) => eprintln!("Failed to create {path}: {err}"),
}
Err(err) => eprintln!("Failed to create {path}: {err}"),
}
}
},
},
("dump-iseq-disasm", _) => unsafe {
if !cfg!(feature = "disasm") {
eprintln!("WARNING: the {} option is only available when YJIT is built in dev mode, i.e. ./configure --enable-yjit=dev", opt_name);
}
OPTIONS.dump_iseq_disasm = Some(opt_val.to_string());
},