diff options
author | Takashi Kokubun <[email protected]> | 2022-12-27 23:04:53 -0800 |
---|---|---|
committer | Takashi Kokubun <[email protected]> | 2023-03-05 22:11:20 -0800 |
commit | e4a824f7695a8de9afb90978ccda038b7d280372 (patch) | |
tree | 9ae92285d84ff4a2bac76bd925bad6a04c4d5d38 /mjit.c | |
parent | 9f8f1afba2572ead6ce5a8ca456cb9cabf094c98 (diff) |
Fix broken rebase
Diffstat (limited to 'mjit.c')
-rw-r--r-- | mjit.c | 86 |
1 files changed, 0 insertions, 86 deletions
@@ -129,92 +129,6 @@ static VALUE rb_mMJITC = 0; static VALUE rb_MJITCompiler = 0; // RubyVM::MJIT::CPointer::Struct_rb_iseq_t static VALUE rb_cMJITIseqPtr = 0; -// RubyVM::MJIT::CPointer::Struct_IC -static VALUE rb_cMJITICPtr = 0; -// RubyVM::MJIT::Compiler -static VALUE rb_mMJITHooks = 0; - -#define WITH_MJIT_DISABLED(stmt) do { \ - bool original_call_p = mjit_call_p; \ - mjit_call_p = false; \ - stmt; \ - mjit_call_p = original_call_p; \ - if (mjit_cancel_p) mjit_call_p = false; \ -} while (0); - -// Hook MJIT when BOP is redefined. -MJIT_FUNC_EXPORTED void -rb_mjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop) -{ - if (!mjit_enabled || !mjit_call_p || !rb_mMJITHooks) return; - WITH_MJIT_DISABLED({ - rb_funcall(rb_mMJITHooks, rb_intern("on_bop_redefined"), 2, INT2NUM(redefined_flag), INT2NUM((int)bop)); - }); -} - -// Hook MJIT when CME is invalidated. -MJIT_FUNC_EXPORTED void -rb_mjit_cme_invalidate(rb_callable_method_entry_t *cme) -{ - if (!mjit_enabled || !mjit_call_p || !rb_mMJITHooks) return; - WITH_MJIT_DISABLED({ - VALUE cme_klass = rb_funcall(rb_mMJITC, rb_intern("rb_callable_method_entry_struct"), 0); - VALUE cme_ptr = rb_funcall(cme_klass, rb_intern("new"), 1, SIZET2NUM((size_t)cme)); - rb_funcall(rb_mMJITHooks, rb_intern("on_cme_invalidate"), 1, cme_ptr); - }); -} - -// Hook MJIT when Ractor is spawned. -void -rb_mjit_before_ractor_spawn(void) -{ - if (!mjit_enabled || !mjit_call_p || !rb_mMJITHooks) return; - WITH_MJIT_DISABLED({ - rb_funcall(rb_mMJITHooks, rb_intern("on_ractor_spawn"), 0); - }); -} - -static void -mjit_constant_state_changed(void *data) -{ - if (!mjit_enabled || !mjit_call_p || !rb_mMJITHooks) return; - ID id = (ID)data; - WITH_MJIT_DISABLED({ - rb_funcall(rb_mMJITHooks, rb_intern("on_constant_state_changed"), 1, ID2SYM(id)); - }); -} - -// Hook MJIT when constant state is changed. -MJIT_FUNC_EXPORTED void -rb_mjit_constant_state_changed(ID id) -{ - if (!mjit_enabled || !mjit_call_p || !rb_mMJITHooks) return; - // Asynchronously hook the Ruby code since this is hooked during a "Ruby critical section". - extern int rb_workqueue_register(unsigned flags, rb_postponed_job_func_t func, void *data); - rb_workqueue_register(0, mjit_constant_state_changed, (void *)id); -} - -// Hook MJIT when constant IC is updated. -MJIT_FUNC_EXPORTED void -rb_mjit_constant_ic_update(const rb_iseq_t *const iseq, IC ic, unsigned insn_idx) -{ - if (!mjit_enabled || !mjit_call_p || !rb_mMJITHooks) return; - WITH_MJIT_DISABLED({ - VALUE iseq_ptr = rb_funcall(rb_cMJITIseqPtr, rb_intern("new"), 1, SIZET2NUM((size_t)iseq)); - VALUE ic_ptr = rb_funcall(rb_cMJITICPtr, rb_intern("new"), 1, SIZET2NUM((size_t)ic)); - rb_funcall(rb_mMJITHooks, rb_intern("on_constant_ic_update"), 3, iseq_ptr, ic_ptr, UINT2NUM(insn_idx)); - }); -} - -// Hook MJIT when TracePoint is enabled. -MJIT_FUNC_EXPORTED void -rb_mjit_tracing_invalidate_all(rb_event_flag_t new_iseq_events) -{ - if (!mjit_enabled || !mjit_call_p || !rb_mMJITHooks) return; - WITH_MJIT_DISABLED({ - rb_funcall(rb_mMJITHooks, rb_intern("on_tracing_invalidate_all"), 1, UINT2NUM(new_iseq_events)); - }); -} void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq) |