aboutsummaryrefslogtreecommitdiffstats
path: root/thread_pthread.h
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2023-12-24 14:33:14 +0900
committerKoichi Sasada <ko1@atdot.net>2023-12-24 15:13:33 +0900
commita87ae242bb460c7643d0f974b96489b5f73a2d45 (patch)
treeb008a72188a08386e43dcefe9a124b65a245e836 /thread_pthread.h
parent541371e286d2f139c49e7805f6f229618eb63144 (diff)
downloadruby-a87ae242bb460c7643d0f974b96489b5f73a2d45.tar.gz
Use noinline version of accessing current ec
On universal.arm64e-darwin22 with clang 15.0.0 (I didn't check details yet) accessing `ruby_current_ec` directly causes assertion violation `VM_ASSERT(ec == rb_current_ec_noinline())` on `rb_current_execution_context()`, maybe because TLS accessing issue.
Diffstat (limited to 'thread_pthread.h')
-rw-r--r--thread_pthread.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/thread_pthread.h b/thread_pthread.h
index 9ccacbf660..20c4b9f9a8 100644
--- a/thread_pthread.h
+++ b/thread_pthread.h
@@ -134,7 +134,7 @@ struct rb_thread_sched {
# ifdef __APPLE__
// on Darwin, TLS can not be accessed across .so
- struct rb_execution_context_struct *rb_current_ec(void);
+ NOINLINE(struct rb_execution_context_struct *rb_current_ec(void));
# else
RUBY_EXTERN RB_THREAD_LOCAL_SPECIFIER struct rb_execution_context_struct *ruby_current_ec;