diff options
author | Takashi Kokubun <[email protected]> | 2025-04-28 09:25:56 -0700 |
---|---|---|
committer | <[email protected]> | 2025-04-28 09:25:56 -0700 |
commit | 58e3aa02240a9ec1b5fe6ce60d63828c2cf0c73a () | |
tree | 145efc5b0d87c0a484e9b6375b43cecd6dfedfba | |
parent | 926411171d296859839745a536aa86bc1e18aa76 (diff) |
ZJIT: Drop trace_zjit_* instructions (#13189)
Notes: Merged-By: k0kubun <[email protected]>
-rw-r--r-- | iseq.c | 57 | ||||
-rw-r--r-- | tool/ruby_vm/models/instructions.rb | 2 | ||||
-rw-r--r-- | tool/ruby_vm/models/trace_instructions.rb | 4 | ||||
-rw-r--r-- | tool/ruby_vm/views/insns.inc.erb | 2 | ||||
-rw-r--r-- | yjit/src/cruby_bindings.inc.rs | 260 | ||||
-rw-r--r-- | zjit.c | 4 | ||||
-rw-r--r-- | zjit/src/cruby_bindings.inc.rs | 260 |
7 files changed, 293 insertions, 296 deletions
@@ -3283,7 +3283,7 @@ iseq_data_to_ary(const rb_iseq_t *iseq) VALUE exception = rb_ary_new(); /* [[....]] */ VALUE misc = rb_hash_new(); - static ID insn_syms[VM_INSTRUCTION_SIZE/2]; /* w/o-trace only */ struct st_table *labels_table = st_init_numtable(); VALUE labels_wrapper = TypedData_Wrap_Struct(0, &label_wrapper, labels_table); @@ -3745,17 +3745,21 @@ rb_iseq_defined_string(enum defined_type type) return rb_fstring_cstr(estr); } -/* A map from encoded_insn to insn_data: decoded insn number, its len, - * non-trace version of encoded insn, and trace version. */ - static st_table *encoded_insn_data; typedef struct insn_data_struct { int insn; int insn_len; void *notrace_encoded_insn; void *trace_encoded_insn; } insn_data_t; -static insn_data_t insn_data[VM_INSTRUCTION_SIZE/2]; void rb_free_encoded_insn_data(void) @@ -3772,27 +3776,33 @@ rb_vm_encoded_insn_data_table_init(void) #else #define INSN_CODE(insn) (insn) #endif - st_data_t insn; - encoded_insn_data = st_init_numtable_with_size(VM_INSTRUCTION_SIZE / 2); - - for (insn = 0; insn < VM_INSTRUCTION_SIZE/2; insn++) { - st_data_t key1 = (st_data_t)INSN_CODE(insn); - st_data_t key2 = (st_data_t)INSN_CODE(insn + VM_INSTRUCTION_SIZE/2); - insn_data[insn].insn = (int)insn; insn_data[insn].insn_len = insn_len(insn); - if (insn != BIN(opt_invokebuiltin_delegate_leave)) { - insn_data[insn].notrace_encoded_insn = (void *) key1; - insn_data[insn].trace_encoded_insn = (void *) key2; - } - else { - insn_data[insn].notrace_encoded_insn = (void *) INSN_CODE(BIN(opt_invokebuiltin_delegate)); - insn_data[insn].trace_encoded_insn = (void *) INSN_CODE(BIN(opt_invokebuiltin_delegate) + VM_INSTRUCTION_SIZE/2); - } st_add_direct(encoded_insn_data, key1, (st_data_t)&insn_data[insn]); st_add_direct(encoded_insn_data, key2, (st_data_t)&insn_data[insn]); } } @@ -3821,8 +3831,13 @@ rb_vm_insn_addr2opcode(const void *addr) insn_data_t *e = (insn_data_t *)val; int opcode = e->insn; if (addr == e->trace_encoded_insn) { - opcode += VM_INSTRUCTION_SIZE/2; } return opcode; } @@ -17,6 +17,6 @@ RubyVM::Instructions = RubyVM::BareInstructions.to_a + \ RubyVM::OperandsUnifications.to_a + \ RubyVM::InstructionsUnifications.to_a -require_relative 'zjit_instructions' require_relative 'trace_instructions' RubyVM::Instructions.freeze @@ -58,6 +58,10 @@ class RubyVM::TraceInstructions return false end private @instances = RubyVM::Instructions.map {|i| new i } @@ -25,6 +25,8 @@ enum ruby_vminsn_type { VM_INSTRUCTION_SIZE }; #define ASSERT_VM_INSTRUCTION_SIZE(array) \ STATIC_ASSERT(numberof_##array, numberof(array) == VM_INSTRUCTION_SIZE) @@ -838,142 +838,130 @@ pub const YARVINSN_setlocal_WC_0: ruby_vminsn_type = 107; pub const YARVINSN_setlocal_WC_1: ruby_vminsn_type = 108; pub const YARVINSN_putobject_INT2FIX_0_: ruby_vminsn_type = 109; pub const YARVINSN_putobject_INT2FIX_1_: ruby_vminsn_type = 110; -pub const YARVINSN_zjit_opt_send_without_block: ruby_vminsn_type = 111; -pub const YARVINSN_zjit_opt_plus: ruby_vminsn_type = 112; -pub const YARVINSN_zjit_opt_minus: ruby_vminsn_type = 113; -pub const YARVINSN_zjit_opt_mult: ruby_vminsn_type = 114; -pub const YARVINSN_zjit_opt_div: ruby_vminsn_type = 115; -pub const YARVINSN_zjit_opt_mod: ruby_vminsn_type = 116; -pub const YARVINSN_zjit_opt_eq: ruby_vminsn_type = 117; -pub const YARVINSN_zjit_opt_neq: ruby_vminsn_type = 118; -pub const YARVINSN_zjit_opt_lt: ruby_vminsn_type = 119; -pub const YARVINSN_zjit_opt_le: ruby_vminsn_type = 120; -pub const YARVINSN_zjit_opt_gt: ruby_vminsn_type = 121; -pub const YARVINSN_zjit_opt_ge: ruby_vminsn_type = 122; -pub const YARVINSN_trace_nop: ruby_vminsn_type = 123; -pub const YARVINSN_trace_getlocal: ruby_vminsn_type = 124; -pub const YARVINSN_trace_setlocal: ruby_vminsn_type = 125; -pub const YARVINSN_trace_getblockparam: ruby_vminsn_type = 126; -pub const YARVINSN_trace_setblockparam: ruby_vminsn_type = 127; -pub const YARVINSN_trace_getblockparamproxy: ruby_vminsn_type = 128; -pub const YARVINSN_trace_getspecial: ruby_vminsn_type = 129; -pub const YARVINSN_trace_setspecial: ruby_vminsn_type = 130; -pub const YARVINSN_trace_getinstancevariable: ruby_vminsn_type = 131; -pub const YARVINSN_trace_setinstancevariable: ruby_vminsn_type = 132; -pub const YARVINSN_trace_getclassvariable: ruby_vminsn_type = 133; -pub const YARVINSN_trace_setclassvariable: ruby_vminsn_type = 134; -pub const YARVINSN_trace_opt_getconstant_path: ruby_vminsn_type = 135; -pub const YARVINSN_trace_getconstant: ruby_vminsn_type = 136; -pub const YARVINSN_trace_setconstant: ruby_vminsn_type = 137; -pub const YARVINSN_trace_getglobal: ruby_vminsn_type = 138; -pub const YARVINSN_trace_setglobal: ruby_vminsn_type = 139; -pub const YARVINSN_trace_putnil: ruby_vminsn_type = 140; -pub const YARVINSN_trace_putself: ruby_vminsn_type = 141; -pub const YARVINSN_trace_putobject: ruby_vminsn_type = 142; -pub const YARVINSN_trace_putspecialobject: ruby_vminsn_type = 143; -pub const YARVINSN_trace_putstring: ruby_vminsn_type = 144; -pub const YARVINSN_trace_putchilledstring: ruby_vminsn_type = 145; -pub const YARVINSN_trace_concatstrings: ruby_vminsn_type = 146; -pub const YARVINSN_trace_anytostring: ruby_vminsn_type = 147; -pub const YARVINSN_trace_toregexp: ruby_vminsn_type = 148; -pub const YARVINSN_trace_intern: ruby_vminsn_type = 149; -pub const YARVINSN_trace_newarray: ruby_vminsn_type = 150; -pub const YARVINSN_trace_pushtoarraykwsplat: ruby_vminsn_type = 151; -pub const YARVINSN_trace_duparray: ruby_vminsn_type = 152; -pub const YARVINSN_trace_duphash: ruby_vminsn_type = 153; -pub const YARVINSN_trace_expandarray: ruby_vminsn_type = 154; -pub const YARVINSN_trace_concatarray: ruby_vminsn_type = 155; -pub const YARVINSN_trace_concattoarray: ruby_vminsn_type = 156; -pub const YARVINSN_trace_pushtoarray: ruby_vminsn_type = 157; -pub const YARVINSN_trace_splatarray: ruby_vminsn_type = 158; -pub const YARVINSN_trace_splatkw: ruby_vminsn_type = 159; -pub const YARVINSN_trace_newhash: ruby_vminsn_type = 160; -pub const YARVINSN_trace_newrange: ruby_vminsn_type = 161; -pub const YARVINSN_trace_pop: ruby_vminsn_type = 162; -pub const YARVINSN_trace_dup: ruby_vminsn_type = 163; -pub const YARVINSN_trace_dupn: ruby_vminsn_type = 164; -pub const YARVINSN_trace_swap: ruby_vminsn_type = 165; -pub const YARVINSN_trace_opt_reverse: ruby_vminsn_type = 166; -pub const YARVINSN_trace_topn: ruby_vminsn_type = 167; -pub const YARVINSN_trace_setn: ruby_vminsn_type = 168; -pub const YARVINSN_trace_adjuststack: ruby_vminsn_type = 169; -pub const YARVINSN_trace_defined: ruby_vminsn_type = 170; -pub const YARVINSN_trace_definedivar: ruby_vminsn_type = 171; -pub const YARVINSN_trace_checkmatch: ruby_vminsn_type = 172; -pub const YARVINSN_trace_checkkeyword: ruby_vminsn_type = 173; -pub const YARVINSN_trace_checktype: ruby_vminsn_type = 174; -pub const YARVINSN_trace_defineclass: ruby_vminsn_type = 175; -pub const YARVINSN_trace_definemethod: ruby_vminsn_type = 176; -pub const YARVINSN_trace_definesmethod: ruby_vminsn_type = 177; -pub const YARVINSN_trace_send: ruby_vminsn_type = 178; -pub const YARVINSN_trace_sendforward: ruby_vminsn_type = 179; -pub const YARVINSN_trace_opt_send_without_block: ruby_vminsn_type = 180; -pub const YARVINSN_trace_opt_new: ruby_vminsn_type = 181; -pub const YARVINSN_trace_objtostring: ruby_vminsn_type = 182; -pub const YARVINSN_trace_opt_ary_freeze: ruby_vminsn_type = 183; -pub const YARVINSN_trace_opt_hash_freeze: ruby_vminsn_type = 184; -pub const YARVINSN_trace_opt_str_freeze: ruby_vminsn_type = 185; -pub const YARVINSN_trace_opt_nil_p: ruby_vminsn_type = 186; -pub const YARVINSN_trace_opt_str_uminus: ruby_vminsn_type = 187; -pub const YARVINSN_trace_opt_duparray_send: ruby_vminsn_type = 188; -pub const YARVINSN_trace_opt_newarray_send: ruby_vminsn_type = 189; -pub const YARVINSN_trace_invokesuper: ruby_vminsn_type = 190; -pub const YARVINSN_trace_invokesuperforward: ruby_vminsn_type = 191; -pub const YARVINSN_trace_invokeblock: ruby_vminsn_type = 192; -pub const YARVINSN_trace_leave: ruby_vminsn_type = 193; -pub const YARVINSN_trace_throw: ruby_vminsn_type = 194; -pub const YARVINSN_trace_jump: ruby_vminsn_type = 195; -pub const YARVINSN_trace_branchif: ruby_vminsn_type = 196; -pub const YARVINSN_trace_branchunless: ruby_vminsn_type = 197; -pub const YARVINSN_trace_branchnil: ruby_vminsn_type = 198; -pub const YARVINSN_trace_once: ruby_vminsn_type = 199; -pub const YARVINSN_trace_opt_case_dis: ruby_vminsn_type = 200; -pub const YARVINSN_trace_opt_plus: ruby_vminsn_type = 201; -pub const YARVINSN_trace_opt_minus: ruby_vminsn_type = 202; -pub const YARVINSN_trace_opt_mult: ruby_vminsn_type = 203; -pub const YARVINSN_trace_opt_div: ruby_vminsn_type = 204; -pub const YARVINSN_trace_opt_mod: ruby_vminsn_type = 205; -pub const YARVINSN_trace_opt_eq: ruby_vminsn_type = 206; -pub const YARVINSN_trace_opt_neq: ruby_vminsn_type = 207; -pub const YARVINSN_trace_opt_lt: ruby_vminsn_type = 208; -pub const YARVINSN_trace_opt_le: ruby_vminsn_type = 209; -pub const YARVINSN_trace_opt_gt: ruby_vminsn_type = 210; -pub const YARVINSN_trace_opt_ge: ruby_vminsn_type = 211; -pub const YARVINSN_trace_opt_ltlt: ruby_vminsn_type = 212; -pub const YARVINSN_trace_opt_and: ruby_vminsn_type = 213; -pub const YARVINSN_trace_opt_or: ruby_vminsn_type = 214; -pub const YARVINSN_trace_opt_aref: ruby_vminsn_type = 215; -pub const YARVINSN_trace_opt_aset: ruby_vminsn_type = 216; -pub const YARVINSN_trace_opt_aset_with: ruby_vminsn_type = 217; -pub const YARVINSN_trace_opt_aref_with: ruby_vminsn_type = 218; -pub const YARVINSN_trace_opt_length: ruby_vminsn_type = 219; -pub const YARVINSN_trace_opt_size: ruby_vminsn_type = 220; -pub const YARVINSN_trace_opt_empty_p: ruby_vminsn_type = 221; -pub const YARVINSN_trace_opt_succ: ruby_vminsn_type = 222; -pub const YARVINSN_trace_opt_not: ruby_vminsn_type = 223; -pub const YARVINSN_trace_opt_regexpmatch2: ruby_vminsn_type = 224; -pub const YARVINSN_trace_invokebuiltin: ruby_vminsn_type = 225; -pub const YARVINSN_trace_opt_invokebuiltin_delegate: ruby_vminsn_type = 226; -pub const YARVINSN_trace_opt_invokebuiltin_delegate_leave: ruby_vminsn_type = 227; -pub const YARVINSN_trace_getlocal_WC_0: ruby_vminsn_type = 228; -pub const YARVINSN_trace_getlocal_WC_1: ruby_vminsn_type = 229; -pub const YARVINSN_trace_setlocal_WC_0: ruby_vminsn_type = 230; -pub const YARVINSN_trace_setlocal_WC_1: ruby_vminsn_type = 231; -pub const YARVINSN_trace_putobject_INT2FIX_0_: ruby_vminsn_type = 232; -pub const YARVINSN_trace_putobject_INT2FIX_1_: ruby_vminsn_type = 233; -pub const YARVINSN_trace_zjit_opt_send_without_block: ruby_vminsn_type = 234; -pub const YARVINSN_trace_zjit_opt_plus: ruby_vminsn_type = 235; -pub const YARVINSN_trace_zjit_opt_minus: ruby_vminsn_type = 236; -pub const YARVINSN_trace_zjit_opt_mult: ruby_vminsn_type = 237; -pub const YARVINSN_trace_zjit_opt_div: ruby_vminsn_type = 238; -pub const YARVINSN_trace_zjit_opt_mod: ruby_vminsn_type = 239; -pub const YARVINSN_trace_zjit_opt_eq: ruby_vminsn_type = 240; -pub const YARVINSN_trace_zjit_opt_neq: ruby_vminsn_type = 241; -pub const YARVINSN_trace_zjit_opt_lt: ruby_vminsn_type = 242; -pub const YARVINSN_trace_zjit_opt_le: ruby_vminsn_type = 243; -pub const YARVINSN_trace_zjit_opt_gt: ruby_vminsn_type = 244; -pub const YARVINSN_trace_zjit_opt_ge: ruby_vminsn_type = 245; -pub const VM_INSTRUCTION_SIZE: ruby_vminsn_type = 246; pub type ruby_vminsn_type = u32; pub type rb_iseq_callback = ::std::option::Option< unsafe extern "C" fn(arg1: *const rb_iseq_t, arg2: *mut ::std::os::raw::c_void), @@ -664,7 +664,7 @@ rb_zjit_profile_enable(const rb_iseq_t *iseq) unsigned int insn_idx = 0; while (insn_idx < iseq->body->iseq_size) { - int insn = rb_vm_insn_decode(iseq->body->iseq_encoded[insn_idx]); int zjit_insn = vm_bare_insn_to_zjit_insn(insn); if (insn != zjit_insn) { iseq->body->iseq_encoded[insn_idx] = (VALUE)insn_table[zjit_insn]; @@ -682,7 +682,7 @@ rb_zjit_profile_disable(const rb_iseq_t *iseq) unsigned int insn_idx = 0; while (insn_idx < iseq->body->iseq_size) { - int insn = rb_vm_insn_decode(iseq->body->iseq_encoded[insn_idx]); int bare_insn = vm_zjit_insn_to_bare_insn(insn); if (insn != bare_insn) { iseq->body->iseq_encoded[insn_idx] = (VALUE)insn_table[bare_insn]; @@ -594,142 +594,130 @@ pub const YARVINSN_setlocal_WC_0: ruby_vminsn_type = 107; pub const YARVINSN_setlocal_WC_1: ruby_vminsn_type = 108; pub const YARVINSN_putobject_INT2FIX_0_: ruby_vminsn_type = 109; pub const YARVINSN_putobject_INT2FIX_1_: ruby_vminsn_type = 110; -pub const YARVINSN_zjit_opt_send_without_block: ruby_vminsn_type = 111; -pub const YARVINSN_zjit_opt_plus: ruby_vminsn_type = 112; -pub const YARVINSN_zjit_opt_minus: ruby_vminsn_type = 113; -pub const YARVINSN_zjit_opt_mult: ruby_vminsn_type = 114; -pub const YARVINSN_zjit_opt_div: ruby_vminsn_type = 115; -pub const YARVINSN_zjit_opt_mod: ruby_vminsn_type = 116; -pub const YARVINSN_zjit_opt_eq: ruby_vminsn_type = 117; -pub const YARVINSN_zjit_opt_neq: ruby_vminsn_type = 118; -pub const YARVINSN_zjit_opt_lt: ruby_vminsn_type = 119; -pub const YARVINSN_zjit_opt_le: ruby_vminsn_type = 120; -pub const YARVINSN_zjit_opt_gt: ruby_vminsn_type = 121; -pub const YARVINSN_zjit_opt_ge: ruby_vminsn_type = 122; -pub const YARVINSN_trace_nop: ruby_vminsn_type = 123; -pub const YARVINSN_trace_getlocal: ruby_vminsn_type = 124; -pub const YARVINSN_trace_setlocal: ruby_vminsn_type = 125; -pub const YARVINSN_trace_getblockparam: ruby_vminsn_type = 126; -pub const YARVINSN_trace_setblockparam: ruby_vminsn_type = 127; -pub const YARVINSN_trace_getblockparamproxy: ruby_vminsn_type = 128; -pub const YARVINSN_trace_getspecial: ruby_vminsn_type = 129; -pub const YARVINSN_trace_setspecial: ruby_vminsn_type = 130; -pub const YARVINSN_trace_getinstancevariable: ruby_vminsn_type = 131; -pub const YARVINSN_trace_setinstancevariable: ruby_vminsn_type = 132; -pub const YARVINSN_trace_getclassvariable: ruby_vminsn_type = 133; -pub const YARVINSN_trace_setclassvariable: ruby_vminsn_type = 134; -pub const YARVINSN_trace_opt_getconstant_path: ruby_vminsn_type = 135; -pub const YARVINSN_trace_getconstant: ruby_vminsn_type = 136; -pub const YARVINSN_trace_setconstant: ruby_vminsn_type = 137; -pub const YARVINSN_trace_getglobal: ruby_vminsn_type = 138; -pub const YARVINSN_trace_setglobal: ruby_vminsn_type = 139; -pub const YARVINSN_trace_putnil: ruby_vminsn_type = 140; -pub const YARVINSN_trace_putself: ruby_vminsn_type = 141; -pub const YARVINSN_trace_putobject: ruby_vminsn_type = 142; -pub const YARVINSN_trace_putspecialobject: ruby_vminsn_type = 143; -pub const YARVINSN_trace_putstring: ruby_vminsn_type = 144; -pub const YARVINSN_trace_putchilledstring: ruby_vminsn_type = 145; -pub const YARVINSN_trace_concatstrings: ruby_vminsn_type = 146; -pub const YARVINSN_trace_anytostring: ruby_vminsn_type = 147; -pub const YARVINSN_trace_toregexp: ruby_vminsn_type = 148; -pub const YARVINSN_trace_intern: ruby_vminsn_type = 149; -pub const YARVINSN_trace_newarray: ruby_vminsn_type = 150; -pub const YARVINSN_trace_pushtoarraykwsplat: ruby_vminsn_type = 151; -pub const YARVINSN_trace_duparray: ruby_vminsn_type = 152; -pub const YARVINSN_trace_duphash: ruby_vminsn_type = 153; -pub const YARVINSN_trace_expandarray: ruby_vminsn_type = 154; -pub const YARVINSN_trace_concatarray: ruby_vminsn_type = 155; -pub const YARVINSN_trace_concattoarray: ruby_vminsn_type = 156; -pub const YARVINSN_trace_pushtoarray: ruby_vminsn_type = 157; -pub const YARVINSN_trace_splatarray: ruby_vminsn_type = 158; -pub const YARVINSN_trace_splatkw: ruby_vminsn_type = 159; -pub const YARVINSN_trace_newhash: ruby_vminsn_type = 160; -pub const YARVINSN_trace_newrange: ruby_vminsn_type = 161; -pub const YARVINSN_trace_pop: ruby_vminsn_type = 162; -pub const YARVINSN_trace_dup: ruby_vminsn_type = 163; -pub const YARVINSN_trace_dupn: ruby_vminsn_type = 164; -pub const YARVINSN_trace_swap: ruby_vminsn_type = 165; -pub const YARVINSN_trace_opt_reverse: ruby_vminsn_type = 166; -pub const YARVINSN_trace_topn: ruby_vminsn_type = 167; -pub const YARVINSN_trace_setn: ruby_vminsn_type = 168; -pub const YARVINSN_trace_adjuststack: ruby_vminsn_type = 169; -pub const YARVINSN_trace_defined: ruby_vminsn_type = 170; -pub const YARVINSN_trace_definedivar: ruby_vminsn_type = 171; -pub const YARVINSN_trace_checkmatch: ruby_vminsn_type = 172; -pub const YARVINSN_trace_checkkeyword: ruby_vminsn_type = 173; -pub const YARVINSN_trace_checktype: ruby_vminsn_type = 174; -pub const YARVINSN_trace_defineclass: ruby_vminsn_type = 175; -pub const YARVINSN_trace_definemethod: ruby_vminsn_type = 176; -pub const YARVINSN_trace_definesmethod: ruby_vminsn_type = 177; -pub const YARVINSN_trace_send: ruby_vminsn_type = 178; -pub const YARVINSN_trace_sendforward: ruby_vminsn_type = 179; -pub const YARVINSN_trace_opt_send_without_block: ruby_vminsn_type = 180; -pub const YARVINSN_trace_opt_new: ruby_vminsn_type = 181; -pub const YARVINSN_trace_objtostring: ruby_vminsn_type = 182; -pub const YARVINSN_trace_opt_ary_freeze: ruby_vminsn_type = 183; -pub const YARVINSN_trace_opt_hash_freeze: ruby_vminsn_type = 184; -pub const YARVINSN_trace_opt_str_freeze: ruby_vminsn_type = 185; -pub const YARVINSN_trace_opt_nil_p: ruby_vminsn_type = 186; -pub const YARVINSN_trace_opt_str_uminus: ruby_vminsn_type = 187; -pub const YARVINSN_trace_opt_duparray_send: ruby_vminsn_type = 188; -pub const YARVINSN_trace_opt_newarray_send: ruby_vminsn_type = 189; -pub const YARVINSN_trace_invokesuper: ruby_vminsn_type = 190; -pub const YARVINSN_trace_invokesuperforward: ruby_vminsn_type = 191; -pub const YARVINSN_trace_invokeblock: ruby_vminsn_type = 192; -pub const YARVINSN_trace_leave: ruby_vminsn_type = 193; -pub const YARVINSN_trace_throw: ruby_vminsn_type = 194; -pub const YARVINSN_trace_jump: ruby_vminsn_type = 195; -pub const YARVINSN_trace_branchif: ruby_vminsn_type = 196; -pub const YARVINSN_trace_branchunless: ruby_vminsn_type = 197; -pub const YARVINSN_trace_branchnil: ruby_vminsn_type = 198; -pub const YARVINSN_trace_once: ruby_vminsn_type = 199; -pub const YARVINSN_trace_opt_case_dis: ruby_vminsn_type = 200; -pub const YARVINSN_trace_opt_plus: ruby_vminsn_type = 201; -pub const YARVINSN_trace_opt_minus: ruby_vminsn_type = 202; -pub const YARVINSN_trace_opt_mult: ruby_vminsn_type = 203; -pub const YARVINSN_trace_opt_div: ruby_vminsn_type = 204; -pub const YARVINSN_trace_opt_mod: ruby_vminsn_type = 205; -pub const YARVINSN_trace_opt_eq: ruby_vminsn_type = 206; -pub const YARVINSN_trace_opt_neq: ruby_vminsn_type = 207; -pub const YARVINSN_trace_opt_lt: ruby_vminsn_type = 208; -pub const YARVINSN_trace_opt_le: ruby_vminsn_type = 209; -pub const YARVINSN_trace_opt_gt: ruby_vminsn_type = 210; -pub const YARVINSN_trace_opt_ge: ruby_vminsn_type = 211; -pub const YARVINSN_trace_opt_ltlt: ruby_vminsn_type = 212; -pub const YARVINSN_trace_opt_and: ruby_vminsn_type = 213; -pub const YARVINSN_trace_opt_or: ruby_vminsn_type = 214; -pub const YARVINSN_trace_opt_aref: ruby_vminsn_type = 215; -pub const YARVINSN_trace_opt_aset: ruby_vminsn_type = 216; -pub const YARVINSN_trace_opt_aset_with: ruby_vminsn_type = 217; -pub const YARVINSN_trace_opt_aref_with: ruby_vminsn_type = 218; -pub const YARVINSN_trace_opt_length: ruby_vminsn_type = 219; -pub const YARVINSN_trace_opt_size: ruby_vminsn_type = 220; -pub const YARVINSN_trace_opt_empty_p: ruby_vminsn_type = 221; -pub const YARVINSN_trace_opt_succ: ruby_vminsn_type = 222; -pub const YARVINSN_trace_opt_not: ruby_vminsn_type = 223; -pub const YARVINSN_trace_opt_regexpmatch2: ruby_vminsn_type = 224; -pub const YARVINSN_trace_invokebuiltin: ruby_vminsn_type = 225; -pub const YARVINSN_trace_opt_invokebuiltin_delegate: ruby_vminsn_type = 226; -pub const YARVINSN_trace_opt_invokebuiltin_delegate_leave: ruby_vminsn_type = 227; -pub const YARVINSN_trace_getlocal_WC_0: ruby_vminsn_type = 228; -pub const YARVINSN_trace_getlocal_WC_1: ruby_vminsn_type = 229; -pub const YARVINSN_trace_setlocal_WC_0: ruby_vminsn_type = 230; -pub const YARVINSN_trace_setlocal_WC_1: ruby_vminsn_type = 231; -pub const YARVINSN_trace_putobject_INT2FIX_0_: ruby_vminsn_type = 232; -pub const YARVINSN_trace_putobject_INT2FIX_1_: ruby_vminsn_type = 233; -pub const YARVINSN_trace_zjit_opt_send_without_block: ruby_vminsn_type = 234; -pub const YARVINSN_trace_zjit_opt_plus: ruby_vminsn_type = 235; -pub const YARVINSN_trace_zjit_opt_minus: ruby_vminsn_type = 236; -pub const YARVINSN_trace_zjit_opt_mult: ruby_vminsn_type = 237; -pub const YARVINSN_trace_zjit_opt_div: ruby_vminsn_type = 238; -pub const YARVINSN_trace_zjit_opt_mod: ruby_vminsn_type = 239; -pub const YARVINSN_trace_zjit_opt_eq: ruby_vminsn_type = 240; -pub const YARVINSN_trace_zjit_opt_neq: ruby_vminsn_type = 241; -pub const YARVINSN_trace_zjit_opt_lt: ruby_vminsn_type = 242; -pub const YARVINSN_trace_zjit_opt_le: ruby_vminsn_type = 243; -pub const YARVINSN_trace_zjit_opt_gt: ruby_vminsn_type = 244; -pub const YARVINSN_trace_zjit_opt_ge: ruby_vminsn_type = 245; -pub const VM_INSTRUCTION_SIZE: ruby_vminsn_type = 246; pub type ruby_vminsn_type = u32; pub type rb_iseq_callback = ::std::option::Option< unsafe extern "C" fn(arg1: *const rb_iseq_t, arg2: *mut ::std::os::raw::c_void), |