aboutsummaryrefslogtreecommitdiffstats
path: root/mjit.h
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2020-12-16 06:24:07 -0800
committerGitHub <noreply@github.com>2020-12-16 06:24:07 -0800
commit53babf35ef5b643774636550ea23851e2607e076 (patch)
treea18e660dd7f39718188fb161fd453c6c39097a14 /mjit.h
parentbfb374be2342d7822cd37a1b100cb1715f85ca74 (diff)
downloadruby-53babf35ef5b643774636550ea23851e2607e076.tar.gz
Inline getconstant on JIT (#3906)
* Inline getconstant on JIT * Support USE_MJIT=0
Diffstat (limited to 'mjit.h')
-rw-r--r--mjit.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/mjit.h b/mjit.h
index a05305cf53..a523bc9512 100644
--- a/mjit.h
+++ b/mjit.h
@@ -70,6 +70,8 @@ struct rb_mjit_compile_info {
bool disable_send_cache;
// Disable method inlining
bool disable_inlining;
+ // Disable opt_getinlinecache inlining
+ bool disable_const_cache;
};
typedef VALUE (*mjit_func_t)(rb_execution_context_t *, rb_control_frame_t *);
@@ -81,10 +83,13 @@ RUBY_EXTERN bool mjit_call_p;
extern void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq);
extern VALUE rb_mjit_wait_call(rb_execution_context_t *ec, struct rb_iseq_constant_body *body);
extern struct rb_mjit_compile_info* rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body);
+extern void rb_mjit_before_vm_ic_update(void);
+extern void rb_mjit_after_vm_ic_update(void);
extern void rb_mjit_recompile_send(const rb_iseq_t *iseq);
extern void rb_mjit_recompile_ivar(const rb_iseq_t *iseq);
extern void rb_mjit_recompile_exivar(const rb_iseq_t *iseq);
extern void rb_mjit_recompile_inlining(const rb_iseq_t *iseq);
+extern void rb_mjit_recompile_const(const rb_iseq_t *iseq);
RUBY_SYMBOL_EXPORT_END
extern bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname, int id);
@@ -189,6 +194,8 @@ void mjit_finish(bool close_handle_p);
# else // USE_MJIT
+static inline void rb_mjit_before_vm_ic_update(void){}
+static inline void rb_mjit_after_vm_ic_update(void){}
static inline struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec){return NULL;}
static inline void mjit_cont_free(struct mjit_cont *cont){}
static inline void mjit_gc_start_hook(void){}