Use no-inline version rb_current_ec
on Arm64
The TLS across .so issue seems related to Arm64, but not Darwin.
This commit is contained in:
parent
cc7fafb459
commit
f7059af50a
Notes:
git
2025-01-17 14:27:44 +00:00
@ -133,8 +133,8 @@ struct rb_thread_sched {
|
||||
#ifdef RB_THREAD_LOCAL_SPECIFIER
|
||||
NOINLINE(void rb_current_ec_set(struct rb_execution_context_struct *));
|
||||
|
||||
# ifdef __APPLE__
|
||||
// on Darwin, TLS can not be accessed across .so
|
||||
# if defined(__arm64__) || defined(__aarch64__)
|
||||
// on Arm64, TLS can not be accessed across .so
|
||||
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;
|
||||
|
2
vm.c
2
vm.c
@ -571,7 +571,7 @@ rb_current_ec_set(rb_execution_context_t *ec)
|
||||
}
|
||||
|
||||
|
||||
#ifdef __APPLE__
|
||||
#if defined(__arm64__) || defined(__aarch64__)
|
||||
rb_execution_context_t *
|
||||
rb_current_ec(void)
|
||||
{
|
||||
|
@ -1977,7 +1977,7 @@ static inline rb_execution_context_t *
|
||||
rb_current_execution_context(bool expect_ec)
|
||||
{
|
||||
#ifdef RB_THREAD_LOCAL_SPECIFIER
|
||||
#ifdef __APPLE__
|
||||
#if defined(__arm64__) || defined(__aarch64__)
|
||||
rb_execution_context_t *ec = rb_current_ec();
|
||||
#else
|
||||
rb_execution_context_t *ec = ruby_current_ec;
|
||||
|
Loading…
x
Reference in New Issue
Block a user