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_iseq_free(
const rb_iseq_t *iseq);
44void rb_zjit_before_ractor_spawn(
void);
45void rb_zjit_tracing_invalidate_all(
void);
46void rb_zjit_invalidate_no_singleton_class(
VALUE klass);
47void rb_zjit_invalidate_root_box(
void);
50#define rb_zjit_entry 0
53static inline void rb_zjit_profile_enable(
const rb_iseq_t *iseq) {}
54static inline void rb_zjit_bop_redefined(
int redefined_flag,
enum ruby_basic_operators bop) {}
56static inline void rb_zjit_invalidate_no_ep_escape(
const rb_iseq_t *iseq) {}
57static inline void rb_zjit_constant_state_changed(
ID id) {}
58static inline void rb_zjit_before_ractor_spawn(
void) {}
59static inline void rb_zjit_tracing_invalidate_all(
void) {}
60static inline void rb_zjit_invalidate_no_singleton_class(
VALUE klass) {}
61static inline void rb_zjit_invalidate_root_box(
void) {}
62static inline void rb_zjit_jit_frame_update_references(
zjit_jit_frame_t *jit_frame) {}
65#define rb_zjit_enabled_p (rb_zjit_entry != 0)
67enum zjit_poison_values {
69 ZJIT_JIT_RETURN_POISON = 2,
78 if (!rb_zjit_enabled_p)
return NULL;
82 return cfp->jit_return;
85static inline const VALUE*
88 if (CFP_JIT_RETURN(cfp)) {
97 if (CFP_JIT_RETURN(cfp)) {
#define RUBY_ASSERT_ALWAYS(expr,...)
A variant of RUBY_ASSERT that does not interface with RUBY_DEBUG.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.