6 #include "vm_callinfo.h"
9 #include "insns_info.inc"
13 #ifndef YJIT_CHECK_MODE
14 # define YJIT_CHECK_MODE 0
19 #ifndef YJIT_DUMP_MODE
20 # define YJIT_DUMP_MODE 0
24 #define JIT_ENABLED USE_MJIT
27 #if JIT_ENABLED && YJIT_SUPPORTED_P
46 typedef rb_darray(
struct yjit_comment) yjit_comment_array_t;
47 static yjit_comment_array_t yjit_code_comments;
50 #define YJIT_DECLARE_COUNTERS(...) struct rb_yjit_runtime_counters { \
51 int64_t __VA_ARGS__; \
53 static char yjit_counter_names[] = #__VA_ARGS__;
55 YJIT_DECLARE_COUNTERS(
65 send_optimized_method,
66 send_optimized_method_send,
67 send_optimized_method_call,
68 send_optimized_method_block_call,
72 send_cfunc_ruby_array_varg,
73 send_cfunc_argc_mismatch,
74 send_cfunc_toomany_args,
79 send_iseq_arity_error,
80 send_iseq_only_keywords,
81 send_iseq_kwargs_req_and_opt_missing,
82 send_iseq_kwargs_mismatch,
83 send_iseq_complex_callee,
84 send_not_implemented_method,
87 send_se_protected_check_failed,
91 invokesuper_me_changed,
96 leave_start_pc_non_zero,
98 getivar_se_self_not_heap,
99 getivar_idx_out_of_range,
102 setivar_se_self_not_heap,
103 setivar_idx_out_of_range,
104 setivar_val_heapobject,
105 setivar_name_not_mapped,
110 oaref_arg_not_fixnum,
112 opt_getinlinecache_miss,
119 compiled_block_count,
122 exit_from_branch_stub,
125 invalidate_method_lookup,
126 invalidate_bop_redefined,
127 invalidate_ractor_spawn,
128 invalidate_constant_state_bump,
129 invalidate_constant_ic_fill,
131 constant_state_bumps,
135 expandarray_not_array,
136 expandarray_rhs_too_small,
138 gbpp_block_param_modified,
139 gbpp_block_handler_not_iseq,
145 static struct rb_yjit_runtime_counters yjit_runtime_counters = { 0 };
146 #undef YJIT_DECLARE_COUNTERS
154 static uint32_t yjit_codepage_frozen_bytes = 0;
156 #include "yjit_utils.c"
157 #include "yjit_core.c"
158 #include "yjit_iface.c"
159 #include "yjit_codegen.c"
167 void Init_builtin_yjit(
void) {}
168 bool rb_yjit_enabled_p(
void) {
return false; }
169 unsigned rb_yjit_call_threshold(
void) {
return UINT_MAX; }
170 void rb_yjit_invalidate_all_method_lookup_assumptions(
void) {};
171 void rb_yjit_method_lookup_change(
VALUE klass,
ID mid) {};
172 void rb_yjit_cme_invalidate(
VALUE cme) {}
173 void rb_yjit_collect_vm_usage_insn(
int insn) {}
174 void rb_yjit_collect_binding_alloc(
void) {}
175 void rb_yjit_collect_binding_set(
void) {}
179 void rb_yjit_constant_state_changed(
void) {}
183 void rb_yjit_before_ractor_spawn(
void) {}
184 void rb_yjit_constant_ic_update(
const rb_iseq_t *
const iseq,
IC ic) {}
185 void rb_yjit_tracing_invalidate_all(
void) {}
Defines RBIMPL_HAS_BUILTIN.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.