summaryrefslogtreecommitdiff
path: root/mjit.c
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2022-11-28 23:53:26 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2022-11-28 23:53:33 -0800
commit44165df121f13ef7b148b8ba4aa08386a24c4df5 (patch)
tree0032bb51ec1fe7e226c83220024d6a499d18e2c4 /mjit.c
parent2329cbeb5bf7c7e8720cd4512285e6784c41367e (diff)
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.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/mjit.c b/mjit.c
index fe5a0c8e57..99ffa33c5b 100644
--- a/mjit.c
+++ b/mjit.c
@@ -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();