1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

YJIT: Check if the processor supports --yjit-stats (#6401)

* YJIT: Add asm comment for incr_counter

* YJIT: Check if the processor supports --yjit-stats
This commit is contained in:
Takashi Kokubun 2022-09-19 16:34:03 +09:00 committed by GitHub
parent ae07336529
commit 5883bc7c07
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
Notes: git 2022-09-19 16:34:35 +09:00
Merged-By: k0kubun <takashikkbn@gmail.com>
2 changed files with 11 additions and 1 deletions

View file

@ -209,6 +209,7 @@ macro_rules! gen_counter_incr {
let ptr = ptr_to_counter!($counter_name);
// Load the pointer into a register
$asm.comment(&format!("increment counter {}", stringify!($counter_name)));
let ptr_reg = $asm.load(Opnd::const_ptr(ptr as *const u8));
let counter_opnd = Opnd::mem(64, ptr_reg, 0);

View file

@ -151,7 +151,16 @@ pub fn parse_option(str_ptr: *const std::os::raw::c_char) -> Option<()> {
("greedy-versioning", "") => unsafe { OPTIONS.greedy_versioning = true },
("no-type-prop", "") => unsafe { OPTIONS.no_type_prop = true },
("stats", "") => unsafe { OPTIONS.gen_stats = true },
("stats", "") => {
// Insn::IncrCounter uses ldaddal, which works only on ARMv8.1+.
#[cfg(target_arch = "aarch64")]
if !std::arch::is_aarch64_feature_detected!("lse") {
eprintln!("Your processor does not support --yjit-stats. Aborting.");
std::process::exit(1);
}
unsafe { OPTIONS.gen_stats = true }
},
("trace-exits", "") => unsafe { OPTIONS.gen_trace_exits = true; OPTIONS.gen_stats = true },
("dump-insns", "") => unsafe { OPTIONS.dump_insns = true },
("verify-ctx", "") => unsafe { OPTIONS.verify_ctx = true },