aboutsummaryrefslogtreecommitdiffstats
path: root/vm.c
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2022-05-20 16:04:10 +0900
committerKoichi Sasada <ko1@atdot.net>2022-05-20 17:37:59 +0900
commit37ea07d59be53bd447d2d87d9cd56f94d41a40dd (patch)
tree9289749e1cdb93e89e19a27d0574c87a324c2cee /vm.c
parenteab99b1d4b61fb85d994534826922f96cd14ae58 (diff)
downloadruby-37ea07d59be53bd447d2d87d9cd56f94d41a40dd.tar.gz
setup vm->main_ractor before `Init_native_thread()`
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/vm.c b/vm.c
index 67189987f1..3b478d848a 100644
--- a/vm.c
+++ b/vm.c
@@ -3249,11 +3249,9 @@ rb_ec_clear_vm_stack(rb_execution_context_t *ec)
}
static void
-th_init(rb_thread_t *th, VALUE self, rb_vm_t *vm, rb_ractor_t *r)
+th_init(rb_thread_t *th, VALUE self, rb_vm_t *vm)
{
th->self = self;
- th->vm = vm;
- th->ractor = r;
rb_threadptr_root_fiber_setup(th);
@@ -3304,7 +3302,8 @@ rb_thread_alloc(VALUE klass)
{
VALUE self = thread_alloc(klass);
rb_thread_t *target_th = rb_thread_ptr(self);
- th_init(target_th, self, GET_VM(), GET_RACTOR());
+ target_th->ractor = GET_RACTOR();
+ th_init(target_th, self, target_th->vm = GET_VM());
return self;
}
@@ -3955,8 +3954,10 @@ Init_BareVM(void)
// setup main thread
th->nt = ZALLOC(struct rb_native_thread);
+ th->vm = vm;
+ th->ractor = vm->ractor.main_ractor = rb_ractor_main_alloc();
Init_native_thread(th);
- th_init(th, 0, vm, vm->ractor.main_ractor = rb_ractor_main_alloc());
+ th_init(th, 0, vm);
rb_ractor_set_current_ec(th->ractor, th->ec);
ruby_thread_init_stack(th);