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:
parent
ae07336529
commit
5883bc7c07
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
|
@ -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);
|
||||
|
||||
|
|
|
@ -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 },
|
||||
|
|
Loading…
Reference in a new issue