diff options
author | Koichi Sasada <ko1@atdot.net> | 2021-09-30 17:30:04 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2021-10-21 16:17:39 +0900 |
commit | 7185c00fcc330db8951b684f548ba3d10983bb92 (patch) | |
tree | 467a4658894283a0bae5c0bdfc9b39be7d9796e4 /iseq.c | |
parent | c7550537f11dcf6450a9d3df3af3fa1f4fe05b15 (diff) |
freeze (make shareable) script_lines
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4913
Diffstat (limited to 'iseq.c')
-rw-r--r-- | iseq.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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); |