diff options
author | Koichi Sasada <ko1@atdot.net> | 2023-12-24 14:33:14 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2023-12-24 15:13:33 +0900 |
commit | a87ae242bb460c7643d0f974b96489b5f73a2d45 (patch) | |
tree | b008a72188a08386e43dcefe9a124b65a245e836 /thread_pthread.h | |
parent | 541371e286d2f139c49e7805f6f229618eb63144 (diff) |
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.h | 2 |
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; |