From 7185c00fcc330db8951b684f548ba3d10983bb92 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Thu, 30 Sep 2021 17:30:04 +0900 Subject: freeze (make shareable) script_lines --- iseq.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'iseq.c') diff --git a/iseq.c b/iseq.c index 0551e0c99a..eb65ec5f79 100644 --- a/iseq.c +++ b/iseq.c @@ -39,7 +39,7 @@ #include "vm_core.h" #include "vm_callinfo.h" #include "yjit.h" - +#include "ruby/ractor.h" #include "builtin.h" #include "insns.inc" #include "insns_info.inc" @@ -617,7 +617,12 @@ prepare_iseq_build(rb_iseq_t *iseq, ISEQ_ORIGINAL_ISEQ_CLEAR(iseq); body->variable.flip_count = 0; - RB_OBJ_WRITE(iseq, &body->variable.script_lines, script_lines); + if (NIL_P(script_lines)) { + RB_OBJ_WRITE(iseq, &body->variable.script_lines, Qnil); + } + else { + RB_OBJ_WRITE(iseq, &body->variable.script_lines, rb_ractor_make_shareable(script_lines)); + } ISEQ_COMPILE_DATA_ALLOC(iseq); RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->err_info, err_info); -- cgit v1.2.3