aboutsummaryrefslogtreecommitdiffstats
path: root/vm_core.h
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2020-12-02 03:37:56 +0900
committerKoichi Sasada <ko1@atdot.net>2020-12-07 08:28:36 +0900
commitb67b24d0f5e78481e6a306881b6858f0dec996ba (patch)
tree178f1e37077ded7eb9bae6d2d2031a22a98f43f0 /vm_core.h
parent60eabb1aa7d1d8ab83c49916bd8c3536daf5d03b (diff)
downloadruby-b67b24d0f5e78481e6a306881b6858f0dec996ba.tar.gz
ruby_single_main_ractor for single ractor mode
ruby_multi_ractor was a flag that indicates the interpreter doesn't make any additional ractors (single ractor mode). Instead of boolean flag, ruby_single_main_ractor pointer is introduced which keeps main ractor's pointer if single ractor mode. If additional ractors are created, ruby_single_main_ractor becomes NULL.
Diffstat (limited to 'vm_core.h')
-rw-r--r--vm_core.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/vm_core.h b/vm_core.h
index 5ddd7b4b4f..6b975ac3ef 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -1799,11 +1799,18 @@ rb_current_thread(void)
return rb_ec_thread_ptr(ec);
}
+extern struct rb_ractor_struct *ruby_single_main_ractor; // ractor.c
+
static inline rb_ractor_t *
rb_current_ractor(void)
{
- const rb_execution_context_t *ec = GET_EC();
- return rb_ec_ractor_ptr(ec);
+ if (ruby_single_main_ractor) {
+ return ruby_single_main_ractor;
+ }
+ else {
+ const rb_execution_context_t *ec = GET_EC();
+ return rb_ec_ractor_ptr(ec);
+ }
}
static inline rb_vm_t *