1 // This file is parsed by tool/rjit/generate.rb to generate rjit_c.rb
5 #include "ruby/internal/config.h"
6 #include "internal/string.h"
7 #include "internal/struct.h"
8 #include "internal/variable.h"
10 #include "vm_callinfo.h"
12 #include "ccan/list/list.h"
16 extern uint8_t *rb_rjit_mem_block
;
18 #define RJIT_RUNTIME_COUNTERS(...) struct rb_rjit_runtime_counters { size_t __VA_ARGS__; };
19 RJIT_RUNTIME_COUNTERS(
22 send_args_splat_kw_splat
,
24 send_args_splat_not_array
,
25 send_args_splat_length_not_equal
,
26 send_args_splat_cfunc_var_args
,
27 send_args_splat_arity_error
,
28 send_args_splat_ruby2_hash
,
29 send_args_splat_cfunc_zuper
,
30 send_args_splat_cfunc_ruby2_keywords
,
33 send_klass_megamorphic
,
36 send_protected_check_failed
,
48 send_is_a_class_mismatch
,
49 send_instance_of_class_mismatch
,
60 send_iseq_accepts_no_kwarg
,
63 send_iseq_ruby2_keywords
,
64 send_iseq_has_rest_and_captured
,
65 send_iseq_has_rest_and_kw_supplied
,
68 send_iseq_materialized_block
,
70 send_iseq_block_arg0_splat
,
74 send_iseq_has_rest_and_optional
,
75 send_iseq_arity_error
,
76 send_iseq_missing_optional_kw
,
77 send_iseq_too_many_kwargs
,
78 send_iseq_kwargs_mismatch
,
79 send_iseq_splat_with_kw
,
80 send_iseq_splat_arity_error
,
81 send_iseq_has_rest_and_splat_not_equal
,
84 send_cfunc_too_many_args
,
85 send_cfunc_ruby_array_varg
,
86 send_cfunc_splat_with_kw
,
88 send_cfunc_argc_mismatch
,
89 send_cfunc_toomany_args
,
98 send_optimized_send_no_args
,
99 send_optimized_send_not_sym_or_str
,
100 send_optimized_send_mid_class_changed
,
101 send_optimized_send_mid_id_changed
,
102 send_optimized_send_null_mid
,
103 send_optimized_send_send
,
104 send_optimized_call_block
,
105 send_optimized_call_kwarg
,
106 send_optimized_call_splat
,
107 send_optimized_struct_aref_error
,
109 send_optimized_block_call
,
110 send_optimized_struct_aset
,
112 send_bmethod_not_iseq
,
113 send_bmethod_blockarg
,
115 invokesuper_me_changed
,
121 invokeblock_tag_changed
,
122 invokeblock_iseq_block_changed
,
123 invokeblock_iseq_arity
,
124 invokeblock_iseq_arg0_splat
,
125 invokeblock_ifunc_args_splat
,
126 invokeblock_ifunc_kw_splat
,
127 invokeblock_iseq_arg0_args_splat
,
128 invokeblock_iseq_arg0_has_kw
,
132 getivar_special_const
,
135 optaref_arg_not_fixnum
,
136 optaref_argc_not_one
,
137 optaref_recv_not_array
,
138 optaref_recv_not_hash
,
141 optgetconst_not_cached
,
143 optgetconst_cache_miss
,
152 expandarray_not_array
,
153 expandarray_rhs_too_small
,
155 getblockpp_block_param_modified
,
156 getblockpp_block_handler_none
,
157 getblockpp_not_gc_guarded
,
158 getblockpp_not_iseq_block
,
162 #undef RJIT_RUNTIME_COUNTERS
163 extern struct rb_rjit_runtime_counters rb_rjit_counters
;
165 #endif /* RJIT_C_H */