YJIT: Skip dump-disasm if it fails to create a file (#8968)
This commit is contained in:
parent
7e7e2dde24
commit
95d4a52b3a
@ -1,4 +1,4 @@
|
|||||||
use std::{ffi::{CStr, CString}, ptr::null};
|
use std::{ffi::{CStr, CString}, ptr::null, fs::File};
|
||||||
use crate::backend::current::TEMP_REGS;
|
use crate::backend::current::TEMP_REGS;
|
||||||
use std::os::raw::{c_char, c_int, c_uint};
|
use std::os::raw::{c_char, c_int, c_uint};
|
||||||
|
|
||||||
@ -230,11 +230,15 @@ pub fn parse_option(str_ptr: *const std::os::raw::c_char) -> Option<()> {
|
|||||||
("dump-disasm", _) => match opt_val {
|
("dump-disasm", _) => match opt_val {
|
||||||
"" => unsafe { OPTIONS.dump_disasm = Some(DumpDisasm::Stdout) },
|
"" => unsafe { OPTIONS.dump_disasm = Some(DumpDisasm::Stdout) },
|
||||||
directory => {
|
directory => {
|
||||||
let pid = std::process::id();
|
let path = format!("{directory}/yjit_{}.log", std::process::id());
|
||||||
let path = format!("{directory}/yjit_{pid}.log");
|
match File::options().create(true).append(true).open(&path) {
|
||||||
|
Ok(_) => {
|
||||||
eprintln!("YJIT disasm dump: {path}");
|
eprintln!("YJIT disasm dump: {path}");
|
||||||
unsafe { OPTIONS.dump_disasm = Some(DumpDisasm::File(path)) }
|
unsafe { OPTIONS.dump_disasm = Some(DumpDisasm::File(path)) }
|
||||||
}
|
}
|
||||||
|
Err(err) => eprintln!("Failed to create {path}: {err}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
("dump-iseq-disasm", _) => unsafe {
|
("dump-iseq-disasm", _) => unsafe {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user