fix macOSX compilation

This commit is contained in:
Daan 2023-03-16 11:35:11 -07:00
parent c4c96d2f8d
commit 7d834864bb
3 changed files with 13 additions and 9 deletions

View file

@ -399,7 +399,7 @@ void _mi_thread_done(mi_heap_t* heap)
void _mi_heap_set_default_direct(mi_heap_t* heap) { void _mi_heap_set_default_direct(mi_heap_t* heap) {
mi_assert_internal(heap != NULL); mi_assert_internal(heap != NULL);
#if defined(MI_TLS_SLOT) #if defined(MI_TLS_SLOT)
mi_tls_slot_set(MI_TLS_SLOT,heap); mi_prim_tls_slot_set(MI_TLS_SLOT,heap);
#elif defined(MI_TLS_PTHREAD_SLOT_OFS) #elif defined(MI_TLS_PTHREAD_SLOT_OFS)
*mi_tls_pthread_heap_slot() = heap; *mi_tls_pthread_heap_slot() = heap;
#elif defined(MI_TLS_PTHREAD) #elif defined(MI_TLS_PTHREAD)

View file

@ -252,16 +252,20 @@ static inline mi_heap_t* mi_prim_get_default_heap(void) {
#elif defined(MI_TLS_PTHREAD_SLOT_OFS) #elif defined(MI_TLS_PTHREAD_SLOT_OFS)
static inline mi_heap_t* mi_prim_get_default_heap(void) { static inline mi_heap_t** mi_prim_tls_pthread_heap_slot(void) {
mi_heap_t* heap;
pthread_t self = pthread_self(); pthread_t self = pthread_self();
#if defined(__DragonFly__) #if defined(__DragonFly__)
if (self==NULL) { heap = _mi_heap_main_get(); } else if (self==NULL) return NULL;
#endif #endif
{ return (mi_heap_t**)((uint8_t*)self + MI_TLS_PTHREAD_SLOT_OFS);
heap = *((mi_heap_t**)((uint8_t*)self + MI_TLS_PTHREAD_SLOT_OFS));
} }
return (mi_unlikely(heap == NULL) ? (mi_heap_t*)&_mi_heap_empty : heap);
static inline mi_heap_t* mi_prim_get_default_heap(void) {
mi_heap_t** pheap = mi_prim_tls_pthread_heap_slot();
if mi_unlikely(pheap == NULL) return _mi_heap_main_get();
mi_heap_t* heap = *pheap;
if mi_unlikely(heap == NULL) return (mi_heap_t*)&_mi_heap_empty;
return heap;
} }
#elif defined(MI_TLS_PTHREAD) #elif defined(MI_TLS_PTHREAD)