summaryrefslogtreecommitdiff
path: root/iseq.c
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2021-09-30 17:30:04 +0900
committerKoichi Sasada <ko1@atdot.net>2021-10-21 16:17:39 +0900
commit7185c00fcc330db8951b684f548ba3d10983bb92 (patch)
tree467a4658894283a0bae5c0bdfc9b39be7d9796e4 /iseq.c
parentc7550537f11dcf6450a9d3df3af3fa1f4fe05b15 (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.c9
1 files changed, 7 insertions, 2 deletions
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);