aboutsummaryrefslogtreecommitdiffstats
path: root/mjit.c
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2022-12-08 10:31:45 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2022-12-08 10:31:56 -0800
commit2cea8e014dbbbb68e4e8be367529b2beae564c54 (patch)
treec215c44c4c2f074d916197102a7ec2e548238795 /mjit.c
parent73771e4b192f3db62efb854affdfc95babba1d35 (diff)
downloadruby-2cea8e014dbbbb68e4e8be367529b2beae564c54.tar.gz
MJIT: Mark MJIT's objects from mjit_mark
It looks like the current way of marking objects was breaking eightbitraptor's upcoming VWA changes and this seems to fix it.
Diffstat (limited to 'mjit.c')
-rw-r--r--mjit.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/mjit.c b/mjit.c
index c553383c73..31c3d709da 100644
--- a/mjit.c
+++ b/mjit.c
@@ -1721,8 +1721,6 @@ 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();
@@ -1922,6 +1920,11 @@ mjit_mark(void)
return;
RUBY_MARK_ENTER("mjit");
+ // Mark objects used by the MJIT compiler
+ rb_gc_mark(rb_cMJITCompiler);
+ rb_gc_mark(rb_cMJITIseqPtr);
+
+ // Mark JIT-compiled ISEQs
struct rb_mjit_unit *unit = NULL;
ccan_list_for_each(&active_units.head, unit, unode) {
rb_gc_mark((VALUE)unit->iseq);