From 3b0bcaf2872e5ab6d2475e9cd6dd5c374d93ae0b Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Fri, 4 Sep 2020 05:51:55 +0900 Subject: check multi_ractor mode at main_p rb_ractor_main_p() need to access to the ractor pointer in TLS. However it is slow operation so that we need to skip this check if it is not multi-ractor mode (!ruby_multi_ractor). This performance regression is pointed at https://bugs.ruby-lang.org/issues/17100#note-27 --- ractor_pub.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'ractor_pub.h') diff --git a/ractor_pub.h b/ractor_pub.h index 5062782b5a..5347481429 100644 --- a/ractor_pub.h +++ b/ractor_pub.h @@ -1,5 +1,20 @@ +#ifndef RACTOR_PUB_INCLUDED +#define RACTOR_PUB_INCLUDED -int rb_ractor_main_p(void); +RUBY_EXTERN bool ruby_multi_ractor; + +bool rb_ractor_main_p_(void); + +static inline bool +rb_ractor_main_p(void) +{ + if (!ruby_multi_ractor) { + return true; + } + else { + return rb_ractor_main_p_(); + } +} bool rb_ractor_shareable_p_continue(VALUE obj); @@ -31,3 +46,5 @@ void rb_ractor_stdout_set(VALUE); void rb_ractor_stderr_set(VALUE); RUBY_SYMBOL_EXPORT_END + +#endif -- cgit v1.2.3