From b67b24d0f5e78481e6a306881b6858f0dec996ba Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Wed, 2 Dec 2020 03:37:56 +0900 Subject: 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. --- vm_sync.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'vm_sync.h') diff --git a/vm_sync.h b/vm_sync.h index 204bcd635e..9833f5aecf 100644 --- a/vm_sync.h +++ b/vm_sync.h @@ -3,7 +3,6 @@ #define RUBY_VM_SYNC_H #include "vm_debug.h" -RUBY_EXTERN bool ruby_multi_ractor; #if USE_RUBY_DEBUG_LOG #define LOCATION_ARGS const char *file, int line @@ -29,10 +28,12 @@ void rb_vm_barrier(void); #include "vm_core.h" #endif +extern struct rb_ractor_struct *ruby_single_main_ractor; // ractor.c + static inline bool rb_multi_ractor_p(void) { - if (LIKELY(!ruby_multi_ractor)) { + if (LIKELY(ruby_single_main_ractor)) { // 0 on boot time. RUBY_ASSERT(GET_VM()->ractor.cnt <= 1); return false; -- cgit v1.2.3