Disable MJIT on a couple of conditions

This commit is contained in:
Takashi Kokubun 2022-12-24 00:11:59 -08:00
Родитель 43f579afb4
Коммит 114f8d3e33
2 изменённых файлов: 20 добавлений и 0 удалений

14
mjit.c
Просмотреть файл

@ -370,6 +370,20 @@ mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname, int id)
// JIT buffer
uint8_t *rb_mjit_mem_block = NULL;
MJIT_FUNC_EXPORTED void
rb_mjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop)
{
if (!mjit_call_p) return;
mjit_call_p = false;
}
void
rb_mjit_before_ractor_spawn(void)
{
if (!mjit_call_p) return;
mjit_call_p = false;
}
void
rb_mjit_compile(const rb_iseq_t *iseq)
{

6
mjit.h
Просмотреть файл

@ -114,6 +114,9 @@ extern void rb_mjit_tracing_invalidate_all(rb_event_flag_t new_iseq_events);
void mjit_child_after_fork(void);
extern void rb_mjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop);
extern void rb_mjit_before_ractor_spawn(void);
# ifdef MJIT_HEADER
#define mjit_enabled true
# else // MJIT_HEADER
@ -143,5 +146,8 @@ static inline VALUE mjit_pause(bool wait_p){ return Qnil; } // unreachable
static inline VALUE mjit_resume(void){ return Qnil; } // unreachable
static inline void mjit_finish(bool close_handle_p){}
static inline void rb_mjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop) {}
static inline void rb_mjit_before_ractor_spawn(void) {}
# endif // USE_MJIT
#endif // RUBY_MJIT_H