summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2022-05-20 15:47:20 +0900
committerKoichi Sasada <ko1@atdot.net>2022-05-20 17:37:46 +0900
commiteab99b1d4b61fb85d994534826922f96cd14ae58 (patch)
tree16f57c273520f5ae7987d8879d13dcf39e64d5c2 /vm.c
parentaeea88174d88264469b406003765c7efdcd53edf (diff)
`rb_thread_t::serial` for debug
`rb_thread_t::serial` is auto-incremented serial number for threads and it can overflow, it means the serial is not a ID for each thread, it is only for debug print. `RUBY_DEBUG_LOG` shows this information. Also skip EC related information if EC is NULL. This patch enable to use `RUBY_DEBUG_LOG` without setup EC.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5921
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/vm.c b/vm.c
index 821db8bfcc..67189987f1 100644
--- a/vm.c
+++ b/vm.c
@@ -3292,6 +3292,11 @@ th_init(rb_thread_t *th, VALUE self, rb_vm_t *vm, rb_ractor_t *r)
th->name = Qnil;
th->report_on_exception = vm->thread_report_on_exception;
th->ext_config.ractor_safe = true;
+
+#if USE_RUBY_DEBUG_LOG
+ static rb_atomic_t thread_serial = 0;
+ th->serial = RUBY_ATOMIC_FETCH_ADD(thread_serial, 1);
+#endif
}
VALUE