12#include "ruby/internal/config.h"
23enum rb_mjit_func_state {
25 MJIT_FUNC_NOT_COMPILED = 0,
28 MJIT_FUNC_COMPILING = 1,
34#define MJIT_FUNC_STATE_P(jit_func) ((uintptr_t)(jit_func) <= (uintptr_t)MJIT_FUNC_FAILED)
55 unsigned int call_threshold;
71 bool disable_ivar_cache;
73 bool disable_exivar_cache;
75 bool disable_send_cache;
77 bool disable_inlining;
79 bool disable_const_cache;
84RUBY_SYMBOL_EXPORT_BEGIN
88extern void rb_mjit_add_iseq_to_process(
const rb_iseq_t *iseq);
90extern void rb_mjit_recompile_send(
const rb_iseq_t *iseq);
91extern void rb_mjit_recompile_ivar(
const rb_iseq_t *iseq);
92extern void rb_mjit_recompile_exivar(
const rb_iseq_t *iseq);
93extern void rb_mjit_recompile_inlining(
const rb_iseq_t *iseq);
94extern void rb_mjit_recompile_const(
const rb_iseq_t *iseq);
97extern void mjit_cancel_all(
const char *reason);
98extern bool mjit_compile(
FILE *f,
const rb_iseq_t *iseq,
const char *funcname,
int id);
100extern void mjit_free_iseq(
const rb_iseq_t *iseq);
101extern void mjit_update_references(
const rb_iseq_t *iseq);
102extern void mjit_mark(
void);
104extern void mjit_notify_waitpid(
int exit_code);
106extern void rb_mjit_bop_redefined(
int redefined_flag,
enum ruby_basic_operators bop);
108extern void rb_mjit_before_ractor_spawn(
void);
109extern void rb_mjit_constant_state_changed(
ID id);
110extern void rb_mjit_constant_ic_update(
const rb_iseq_t *
const iseq,
IC ic,
unsigned insn_idx);
111extern void rb_mjit_tracing_invalidate_all(
rb_event_flag_t new_iseq_events);
113void mjit_child_after_fork(
void);
116#define mjit_enabled true
118extern bool mjit_enabled;
120VALUE mjit_pause(
bool wait_p);
121VALUE mjit_resume(
void);
122void mjit_finish(
bool close_handle_p);
126static inline void mjit_cancel_all(
const char *reason){}
127static inline void mjit_free_iseq(
const rb_iseq_t *iseq){}
128static inline void mjit_mark(
void){}
130static inline void mjit_child_after_fork(
void){}
132static inline void rb_mjit_bop_redefined(
int redefined_flag,
enum ruby_basic_operators bop) {}
134static inline void rb_mjit_before_ractor_spawn(
void) {}
135static inline void rb_mjit_constant_state_changed(
ID id) {}
136static inline void rb_mjit_constant_ic_update(
const rb_iseq_t *
const iseq,
IC ic,
unsigned insn_idx) {}
137static inline void rb_mjit_tracing_invalidate_all(
rb_event_flag_t new_iseq_events) {}
139#define mjit_enabled false
140static inline VALUE mjit_pause(
bool wait_p){
return Qnil; }
141static inline VALUE mjit_resume(
void){
return Qnil; }
142static inline void mjit_finish(
bool close_handle_p){}
#define RUBY_EXTERN
Declaration of externally visible global variables.
uint32_t rb_event_flag_t
Represents event(s).
#define Qundef
Old name of RUBY_Qundef.
#define Qnil
Old name of RUBY_Qnil.
uintptr_t VALUE
Type that represents a Ruby object.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.