9# define ZJIT_STATS (USE_ZJIT && RUBY_DEBUG)
25 bool materialize_block_code;
29extern void *rb_zjit_entry;
30extern uint64_t rb_zjit_call_threshold;
31extern uint64_t rb_zjit_profile_threshold;
34void rb_zjit_profile_enable(
const rb_iseq_t *iseq);
35void rb_zjit_bop_redefined(
int redefined_flag,
enum ruby_basic_operators bop);
38void rb_zjit_klass_free(
VALUE klass);
39void rb_zjit_invalidate_no_ep_escape(
const rb_iseq_t *iseq);
40void rb_zjit_constant_state_changed(
ID id);
41void rb_zjit_iseq_mark(
void *payload);
42void rb_zjit_iseq_update_references(
void *payload);
43void rb_zjit_mark_all_writable(
void);
44void rb_zjit_mark_all_executable(
void);
45void rb_zjit_iseq_free(
const rb_iseq_t *iseq);
46void rb_zjit_before_ractor_spawn(
void);
47void rb_zjit_tracing_invalidate_all(
void);
48void rb_zjit_invalidate_no_singleton_class(
VALUE klass);
49void rb_zjit_invalidate_root_box(
void);
52#define rb_zjit_entry 0
55static inline void rb_zjit_profile_enable(
const rb_iseq_t *iseq) {}
56static inline void rb_zjit_bop_redefined(
int redefined_flag,
enum ruby_basic_operators bop) {}
58static inline void rb_zjit_invalidate_no_ep_escape(
const rb_iseq_t *iseq) {}
59static inline void rb_zjit_constant_state_changed(
ID id) {}
60static inline void rb_zjit_before_ractor_spawn(
void) {}
61static inline void rb_zjit_tracing_invalidate_all(
void) {}
62static inline void rb_zjit_invalidate_no_singleton_class(
VALUE klass) {}
63static inline void rb_zjit_invalidate_root_box(
void) {}
64static inline void rb_zjit_jit_frame_update_references(
zjit_jit_frame_t *jit_frame) {}
67#define rb_zjit_enabled_p (rb_zjit_entry != 0)
70#define ZJIT_JIT_RETURN_POISON 0xbadfbadfbadfbadfULL
78 if (!rb_zjit_enabled_p)
return NULL;
80 RUBY_ASSERT((
unsigned long long)cfp->jit_return != ZJIT_JIT_RETURN_POISON);
82 return cfp->jit_return;
85static inline const VALUE*
88 if (CFP_ZJIT_FRAME(cfp)) {
97 if (CFP_ZJIT_FRAME(cfp)) {
#define RUBY_ASSERT(...)
Asserts that the given expression is truthy if and only if RUBY_DEBUG is truthy.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.