File tree 2 files changed +12
-2
lines changed
2 files changed +12
-2
lines changed Original file line number Diff line number Diff line change @@ -727,8 +727,10 @@ TSRM_API void *tsrm_get_ls_cache(void)
727
727
TSRM_API size_t tsrm_get_ls_cache_tcb_offset (void )
728
728
{/*{{{*/
729
729
#if defined(__APPLE__ ) && defined(__x86_64__ )
730
- // TODO: Implement support for fast JIT ZTS code ???
731
- return 0 ;
730
+ size_t ret ;
731
+ asm ("movq __tsrm_ls_cache(%%rip),%0"
732
+ : "=r" (ret ));
733
+ return ret ;
732
734
#elif defined(__x86_64__ ) && defined(__GNUC__ )
733
735
size_t ret ;
734
736
Original file line number Diff line number Diff line change @@ -2923,12 +2923,20 @@ static int zend_jit_setup(void)
2923
2923
# elif defined(__APPLE__) && defined(__x86_64__)
2924
2924
tsrm_ls_cache_tcb_offset = tsrm_get_ls_cache_tcb_offset();
2925
2925
if (tsrm_ls_cache_tcb_offset == 0) {
2926
+ #if defined(__has_attribute) && __has_attribute(tls_model)
2927
+ size_t ret;
2928
+
2929
+ asm ("movq __tsrm_ls_cache(%%rip),%0"
2930
+ : "=r" (ret));
2931
+ tsrm_ls_cache_tcb_offset = ret;
2932
+ #else
2926
2933
size_t *ti;
2927
2934
__asm__(
2928
2935
"leaq __tsrm_ls_cache(%%rip),%0"
2929
2936
: "=r" (ti));
2930
2937
tsrm_tls_offset = ti[2];
2931
2938
tsrm_tls_index = ti[1] * 8;
2939
+ #endif
2932
2940
}
2933
2941
# elif defined(__GNUC__) && defined(__x86_64__)
2934
2942
tsrm_ls_cache_tcb_offset = tsrm_get_ls_cache_tcb_offset();
You can’t perform that action at this time.
0 commit comments