From 5a11098754979aaafd2f61f85d89ad9a28e6a8ba Mon Sep 17 00:00:00 2001 From: Max Bernstein Date: Mon, 19 Oct 2026 15:41:28 -0400 Subject: [PATCH] ZJIT: Don't profile splatkw instruction We don't use the profiles anymore. --- insns.def | 1 - yjit/src/cruby_bindings.inc.rs | 63 +++++++++++++++++----------------- zjit/src/cruby_bindings.inc.rs | 63 +++++++++++++++++----------------- zjit/src/profile.rs | 1 - 4 files changed, 62 insertions(+), 66 deletions(-) diff --git a/insns.def b/insns.def index 40f155e25f3..69c31c052e4 100644 --- a/insns.def +++ b/insns.def @@ -569,7 +569,6 @@ splatkw (VALUE hash, VALUE block) (VALUE obj, VALUE block) // attr bool leaf = false; /* has rb_to_hash_type() */ -// attr bool zjit_profile = true; { if (NIL_P(hash)) { obj = Qnil; diff --git a/yjit/src/cruby_bindings.inc.rs b/yjit/src/cruby_bindings.inc.rs index 3547abdeec1..497fba74c9f 100644 --- a/yjit/src/cruby_bindings.inc.rs +++ b/yjit/src/cruby_bindings.inc.rs @@ -1008,38 +1008,37 @@ pub const YARVINSN_trace_putobject_INT2FIX_0_: ruby_vminsn_type = 224; pub const YARVINSN_trace_putobject_INT2FIX_1_: ruby_vminsn_type = 225; pub const YARVINSN_zjit_getinstancevariable: ruby_vminsn_type = 226; pub const YARVINSN_zjit_setinstancevariable: ruby_vminsn_type = 227; -pub const YARVINSN_zjit_splatkw: ruby_vminsn_type = 228; -pub const YARVINSN_zjit_definedivar: ruby_vminsn_type = 229; -pub const YARVINSN_zjit_send: ruby_vminsn_type = 230; -pub const YARVINSN_zjit_opt_send_without_block: ruby_vminsn_type = 231; -pub const YARVINSN_zjit_objtostring: ruby_vminsn_type = 232; -pub const YARVINSN_zjit_opt_nil_p: ruby_vminsn_type = 233; -pub const YARVINSN_zjit_invokesuper: ruby_vminsn_type = 234; -pub const YARVINSN_zjit_invokeblock: ruby_vminsn_type = 235; -pub const YARVINSN_zjit_opt_case_dispatch: ruby_vminsn_type = 236; -pub const YARVINSN_zjit_opt_plus: ruby_vminsn_type = 237; -pub const YARVINSN_zjit_opt_minus: ruby_vminsn_type = 238; -pub const YARVINSN_zjit_opt_mult: ruby_vminsn_type = 239; -pub const YARVINSN_zjit_opt_div: ruby_vminsn_type = 240; -pub const YARVINSN_zjit_opt_mod: ruby_vminsn_type = 241; -pub const YARVINSN_zjit_opt_eq: ruby_vminsn_type = 242; -pub const YARVINSN_zjit_opt_neq: ruby_vminsn_type = 243; -pub const YARVINSN_zjit_opt_lt: ruby_vminsn_type = 244; -pub const YARVINSN_zjit_opt_le: ruby_vminsn_type = 245; -pub const YARVINSN_zjit_opt_gt: ruby_vminsn_type = 246; -pub const YARVINSN_zjit_opt_ge: ruby_vminsn_type = 247; -pub const YARVINSN_zjit_opt_ltlt: ruby_vminsn_type = 248; -pub const YARVINSN_zjit_opt_and: ruby_vminsn_type = 249; -pub const YARVINSN_zjit_opt_or: ruby_vminsn_type = 250; -pub const YARVINSN_zjit_opt_aref: ruby_vminsn_type = 251; -pub const YARVINSN_zjit_opt_aset: ruby_vminsn_type = 252; -pub const YARVINSN_zjit_opt_length: ruby_vminsn_type = 253; -pub const YARVINSN_zjit_opt_size: ruby_vminsn_type = 254; -pub const YARVINSN_zjit_opt_empty_p: ruby_vminsn_type = 255; -pub const YARVINSN_zjit_opt_succ: ruby_vminsn_type = 256; -pub const YARVINSN_zjit_opt_not: ruby_vminsn_type = 257; -pub const YARVINSN_zjit_opt_regexpmatch2: ruby_vminsn_type = 258; -pub const VM_INSTRUCTION_SIZE: ruby_vminsn_type = 259; +pub const YARVINSN_zjit_definedivar: ruby_vminsn_type = 228; +pub const YARVINSN_zjit_send: ruby_vminsn_type = 229; +pub const YARVINSN_zjit_opt_send_without_block: ruby_vminsn_type = 230; +pub const YARVINSN_zjit_objtostring: ruby_vminsn_type = 231; +pub const YARVINSN_zjit_opt_nil_p: ruby_vminsn_type = 232; +pub const YARVINSN_zjit_invokesuper: ruby_vminsn_type = 233; +pub const YARVINSN_zjit_invokeblock: ruby_vminsn_type = 234; +pub const YARVINSN_zjit_opt_case_dispatch: ruby_vminsn_type = 235; +pub const YARVINSN_zjit_opt_plus: ruby_vminsn_type = 236; +pub const YARVINSN_zjit_opt_minus: ruby_vminsn_type = 237; +pub const YARVINSN_zjit_opt_mult: ruby_vminsn_type = 238; +pub const YARVINSN_zjit_opt_div: ruby_vminsn_type = 239; +pub const YARVINSN_zjit_opt_mod: ruby_vminsn_type = 240; +pub const YARVINSN_zjit_opt_eq: ruby_vminsn_type = 241; +pub const YARVINSN_zjit_opt_neq: ruby_vminsn_type = 242; +pub const YARVINSN_zjit_opt_lt: ruby_vminsn_type = 243; +pub const YARVINSN_zjit_opt_le: ruby_vminsn_type = 244; +pub const YARVINSN_zjit_opt_gt: ruby_vminsn_type = 245; +pub const YARVINSN_zjit_opt_ge: ruby_vminsn_type = 246; +pub const YARVINSN_zjit_opt_ltlt: ruby_vminsn_type = 247; +pub const YARVINSN_zjit_opt_and: ruby_vminsn_type = 248; +pub const YARVINSN_zjit_opt_or: ruby_vminsn_type = 249; +pub const YARVINSN_zjit_opt_aref: ruby_vminsn_type = 250; +pub const YARVINSN_zjit_opt_aset: ruby_vminsn_type = 251; +pub const YARVINSN_zjit_opt_length: ruby_vminsn_type = 252; +pub const YARVINSN_zjit_opt_size: ruby_vminsn_type = 253; +pub const YARVINSN_zjit_opt_empty_p: ruby_vminsn_type = 254; +pub const YARVINSN_zjit_opt_succ: ruby_vminsn_type = 255; +pub const YARVINSN_zjit_opt_not: ruby_vminsn_type = 256; +pub const YARVINSN_zjit_opt_regexpmatch2: ruby_vminsn_type = 257; +pub const VM_INSTRUCTION_SIZE: ruby_vminsn_type = 258; pub type ruby_vminsn_type = u32; pub const DEFINED_NOT_DEFINED: defined_type = 0; pub const DEFINED_NIL: defined_type = 1; diff --git a/zjit/src/cruby_bindings.inc.rs b/zjit/src/cruby_bindings.inc.rs index 2ce31249af2..6b62ce2a42f 100644 --- a/zjit/src/cruby_bindings.inc.rs +++ b/zjit/src/cruby_bindings.inc.rs @@ -1989,38 +1989,37 @@ pub const YARVINSN_trace_putobject_INT2FIX_0_: ruby_vminsn_type = 224; pub const YARVINSN_trace_putobject_INT2FIX_1_: ruby_vminsn_type = 225; pub const YARVINSN_zjit_getinstancevariable: ruby_vminsn_type = 226; pub const YARVINSN_zjit_setinstancevariable: ruby_vminsn_type = 227; -pub const YARVINSN_zjit_splatkw: ruby_vminsn_type = 228; -pub const YARVINSN_zjit_definedivar: ruby_vminsn_type = 229; -pub const YARVINSN_zjit_send: ruby_vminsn_type = 230; -pub const YARVINSN_zjit_opt_send_without_block: ruby_vminsn_type = 231; -pub const YARVINSN_zjit_objtostring: ruby_vminsn_type = 232; -pub const YARVINSN_zjit_opt_nil_p: ruby_vminsn_type = 233; -pub const YARVINSN_zjit_invokesuper: ruby_vminsn_type = 234; -pub const YARVINSN_zjit_invokeblock: ruby_vminsn_type = 235; -pub const YARVINSN_zjit_opt_case_dispatch: ruby_vminsn_type = 236; -pub const YARVINSN_zjit_opt_plus: ruby_vminsn_type = 237; -pub const YARVINSN_zjit_opt_minus: ruby_vminsn_type = 238; -pub const YARVINSN_zjit_opt_mult: ruby_vminsn_type = 239; -pub const YARVINSN_zjit_opt_div: ruby_vminsn_type = 240; -pub const YARVINSN_zjit_opt_mod: ruby_vminsn_type = 241; -pub const YARVINSN_zjit_opt_eq: ruby_vminsn_type = 242; -pub const YARVINSN_zjit_opt_neq: ruby_vminsn_type = 243; -pub const YARVINSN_zjit_opt_lt: ruby_vminsn_type = 244; -pub const YARVINSN_zjit_opt_le: ruby_vminsn_type = 245; -pub const YARVINSN_zjit_opt_gt: ruby_vminsn_type = 246; -pub const YARVINSN_zjit_opt_ge: ruby_vminsn_type = 247; -pub const YARVINSN_zjit_opt_ltlt: ruby_vminsn_type = 248; -pub const YARVINSN_zjit_opt_and: ruby_vminsn_type = 249; -pub const YARVINSN_zjit_opt_or: ruby_vminsn_type = 250; -pub const YARVINSN_zjit_opt_aref: ruby_vminsn_type = 251; -pub const YARVINSN_zjit_opt_aset: ruby_vminsn_type = 252; -pub const YARVINSN_zjit_opt_length: ruby_vminsn_type = 253; -pub const YARVINSN_zjit_opt_size: ruby_vminsn_type = 254; -pub const YARVINSN_zjit_opt_empty_p: ruby_vminsn_type = 255; -pub const YARVINSN_zjit_opt_succ: ruby_vminsn_type = 256; -pub const YARVINSN_zjit_opt_not: ruby_vminsn_type = 257; -pub const YARVINSN_zjit_opt_regexpmatch2: ruby_vminsn_type = 258; -pub const VM_INSTRUCTION_SIZE: ruby_vminsn_type = 259; +pub const YARVINSN_zjit_definedivar: ruby_vminsn_type = 228; +pub const YARVINSN_zjit_send: ruby_vminsn_type = 229; +pub const YARVINSN_zjit_opt_send_without_block: ruby_vminsn_type = 230; +pub const YARVINSN_zjit_objtostring: ruby_vminsn_type = 231; +pub const YARVINSN_zjit_opt_nil_p: ruby_vminsn_type = 232; +pub const YARVINSN_zjit_invokesuper: ruby_vminsn_type = 233; +pub const YARVINSN_zjit_invokeblock: ruby_vminsn_type = 234; +pub const YARVINSN_zjit_opt_case_dispatch: ruby_vminsn_type = 235; +pub const YARVINSN_zjit_opt_plus: ruby_vminsn_type = 236; +pub const YARVINSN_zjit_opt_minus: ruby_vminsn_type = 237; +pub const YARVINSN_zjit_opt_mult: ruby_vminsn_type = 238; +pub const YARVINSN_zjit_opt_div: ruby_vminsn_type = 239; +pub const YARVINSN_zjit_opt_mod: ruby_vminsn_type = 240; +pub const YARVINSN_zjit_opt_eq: ruby_vminsn_type = 241; +pub const YARVINSN_zjit_opt_neq: ruby_vminsn_type = 242; +pub const YARVINSN_zjit_opt_lt: ruby_vminsn_type = 243; +pub const YARVINSN_zjit_opt_le: ruby_vminsn_type = 244; +pub const YARVINSN_zjit_opt_gt: ruby_vminsn_type = 245; +pub const YARVINSN_zjit_opt_ge: ruby_vminsn_type = 246; +pub const YARVINSN_zjit_opt_ltlt: ruby_vminsn_type = 247; +pub const YARVINSN_zjit_opt_and: ruby_vminsn_type = 248; +pub const YARVINSN_zjit_opt_or: ruby_vminsn_type = 249; +pub const YARVINSN_zjit_opt_aref: ruby_vminsn_type = 250; +pub const YARVINSN_zjit_opt_aset: ruby_vminsn_type = 251; +pub const YARVINSN_zjit_opt_length: ruby_vminsn_type = 252; +pub const YARVINSN_zjit_opt_size: ruby_vminsn_type = 253; +pub const YARVINSN_zjit_opt_empty_p: ruby_vminsn_type = 254; +pub const YARVINSN_zjit_opt_succ: ruby_vminsn_type = 255; +pub const YARVINSN_zjit_opt_not: ruby_vminsn_type = 256; +pub const YARVINSN_zjit_opt_regexpmatch2: ruby_vminsn_type = 257; +pub const VM_INSTRUCTION_SIZE: ruby_vminsn_type = 258; pub type ruby_vminsn_type = u32; #[repr(C)] #[repr(align(8))] diff --git a/zjit/src/profile.rs b/zjit/src/profile.rs index beacb6ba117..036163ca41c 100644 --- a/zjit/src/profile.rs +++ b/zjit/src/profile.rs @@ -101,7 +101,6 @@ fn profile_insn_sample( profile_operands(profiler, profile, argc + 1); profile_splat_length(profiler, profile, unsafe { (*cd).ci }); } - YARVINSN_splatkw => profile_operands(profiler, profile, 2), _ => return false, }