diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2022-11-28 23:53:26 -0800 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2022-11-28 23:53:33 -0800 |
commit | 44165df121f13ef7b148b8ba4aa08386a24c4df5 (patch) | |
tree | 0032bb51ec1fe7e226c83220024d6a499d18e2c4 /mjit.c | |
parent | 2329cbeb5bf7c7e8720cd4512285e6784c41367e (diff) | |
download | ruby-44165df121f13ef7b148b8ba4aa08386a24c4df5.tar.gz |
MJIT: Cache an ISeq pointer instance
to obviate one rb_funcall. This also removes rb_ptr as refactoring.
Diffstat (limited to 'mjit.c')
-rw-r--r-- | mjit.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -1322,9 +1322,11 @@ mjit_target_iseq_p(const rb_iseq_t *iseq) // RubyVM::MJIT static VALUE rb_mMJIT = 0; // RubyVM::MJIT::C -VALUE rb_mMJITC = 0; +static VALUE rb_mMJITC = 0; // RubyVM::MJIT::Compiler VALUE rb_cMJITCompiler = 0; +// RubyVM::MJIT::CPointer::Struct_rb_iseq_t +VALUE rb_cMJITIseqPtr = 0; // [experimental] Call custom RubyVM::MJIT.compile if defined static void @@ -1767,7 +1769,9 @@ mjit_init(const struct mjit_options *opts) } rb_mMJITC = rb_const_get(rb_mMJIT, rb_intern("C")); rb_cMJITCompiler = rb_funcall(rb_const_get(rb_mMJIT, rb_intern("Compiler")), rb_intern("new"), 0); + rb_cMJITIseqPtr = rb_funcall(rb_mMJITC, rb_intern("rb_iseq_t"), 0); rb_gc_register_mark_object(rb_cMJITCompiler); + rb_gc_register_mark_object(rb_cMJITIseqPtr); mjit_call_p = true; mjit_pid = getpid(); |