diff options
author | Koichi Sasada <[email protected]> | 2020-12-02 03:37:56 +0900 |
---|---|---|
committer | Koichi Sasada <[email protected]> | 2020-12-07 08:28:36 +0900 |
commit | b67b24d0f5e78481e6a306881b6858f0dec996ba (patch) | |
tree | 178f1e37077ded7eb9bae6d2d2031a22a98f43f0 /vm_core.h | |
parent | 60eabb1aa7d1d8ab83c49916bd8c3536daf5d03b (diff) |
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.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3842
Diffstat (limited to 'vm_core.h')
-rw-r--r-- | vm_core.h | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -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 * |