mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 05:29:10 +02:00

* ZJIT: Implement SingleRactorMode invalidation * ZJIT: Add macro for compiling jumps * ZJIT: Fix typo in comment * YJIT: Fix typo in comment * ZJIT: Avoid using unexported types in zjit.h `enum ruby_vminsn_type` is declared in `insns.inc` and is not exported. Using it in `zjit.h` would cause build errors when the file including it doesn't include `insns.inc`.
38 lines
1.7 KiB
C
38 lines
1.7 KiB
C
#ifndef ZJIT_H
|
|
#define ZJIT_H 1
|
|
//
|
|
// This file contains definitions ZJIT exposes to the CRuby codebase
|
|
//
|
|
|
|
// ZJIT_STATS controls whether to support runtime counters in the interpreter
|
|
#ifndef ZJIT_STATS
|
|
# define ZJIT_STATS (USE_ZJIT && RUBY_DEBUG)
|
|
#endif
|
|
|
|
#if USE_ZJIT
|
|
extern bool rb_zjit_enabled_p;
|
|
extern uint64_t rb_zjit_call_threshold;
|
|
extern uint64_t rb_zjit_profile_threshold;
|
|
void rb_zjit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec, bool jit_exception);
|
|
void rb_zjit_profile_insn(uint32_t insn, rb_execution_context_t *ec);
|
|
void rb_zjit_profile_enable(const rb_iseq_t *iseq);
|
|
void rb_zjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop);
|
|
void rb_zjit_cme_invalidate(const rb_callable_method_entry_t *cme);
|
|
void rb_zjit_invalidate_ep_is_bp(const rb_iseq_t *iseq);
|
|
void rb_zjit_constant_state_changed(ID id);
|
|
void rb_zjit_iseq_mark(void *payload);
|
|
void rb_zjit_iseq_update_references(void *payload);
|
|
void rb_zjit_before_ractor_spawn(void);
|
|
#else
|
|
#define rb_zjit_enabled_p false
|
|
static inline void rb_zjit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec, bool jit_exception) {}
|
|
static inline void rb_zjit_profile_insn(uint32_t insn, rb_execution_context_t *ec) {}
|
|
static inline void rb_zjit_profile_enable(const rb_iseq_t *iseq) {}
|
|
static inline void rb_zjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop) {}
|
|
static inline void rb_zjit_cme_invalidate(const rb_callable_method_entry_t *cme) {}
|
|
static inline void rb_zjit_invalidate_ep_is_bp(const rb_iseq_t *iseq) {}
|
|
static inline void rb_zjit_constant_state_changed(ID id) {}
|
|
static inline void rb_zjit_before_ractor_spawn(void) {}
|
|
#endif // #if USE_ZJIT
|
|
|
|
#endif // #ifndef ZJIT_H
|