Use get_noncachable in malloc/new overrides.

This may return the GlobalPlaceholder, in which case the slow path will
be used, initializing the real thread local allocator.
This commit is contained in:
Paul Liétar 2019-07-17 14:16:18 +01:00
Родитель 242f51eaaa
Коммит b2b86565db
2 изменённых файлов: 13 добавлений и 13 удалений

Просмотреть файл

@ -23,12 +23,12 @@ extern "C"
SNMALLOC_EXPORT void* SNMALLOC_NAME_MANGLE(malloc)(size_t size)
{
return ThreadAlloc::get()->alloc(size);
return ThreadAlloc::get_noncachable()->alloc(size);
}
SNMALLOC_EXPORT void SNMALLOC_NAME_MANGLE(free)(void* ptr)
{
ThreadAlloc::get()->dealloc(ptr);
ThreadAlloc::get_noncachable()->dealloc(ptr);
}
SNMALLOC_EXPORT void* SNMALLOC_NAME_MANGLE(calloc)(size_t nmemb, size_t size)
@ -40,7 +40,7 @@ extern "C"
errno = ENOMEM;
return nullptr;
}
return ThreadAlloc::get()->alloc<ZeroMem::YesZero>(sz);
return ThreadAlloc::get_noncachable()->alloc<ZeroMem::YesZero>(sz);
}
SNMALLOC_EXPORT size_t SNMALLOC_NAME_MANGLE(malloc_usable_size)(void* ptr)

Просмотреть файл

@ -18,50 +18,50 @@ using namespace snmalloc;
void* operator new(size_t size)
{
return ThreadAlloc::get()->alloc(size);
return ThreadAlloc::get_noncachable()->alloc(size);
}
void* operator new[](size_t size)
{
return ThreadAlloc::get()->alloc(size);
return ThreadAlloc::get_noncachable()->alloc(size);
}
void* operator new(size_t size, std::nothrow_t&)
{
return ThreadAlloc::get()->alloc(size);
return ThreadAlloc::get_noncachable()->alloc(size);
}
void* operator new[](size_t size, std::nothrow_t&)
{
return ThreadAlloc::get()->alloc(size);
return ThreadAlloc::get_noncachable()->alloc(size);
}
void operator delete(void* p)EXCEPTSPEC
{
ThreadAlloc::get()->dealloc(p);
ThreadAlloc::get_noncachable()->dealloc(p);
}
void operator delete(void* p, size_t size)EXCEPTSPEC
{
ThreadAlloc::get()->dealloc(p, size);
ThreadAlloc::get_noncachable()->dealloc(p, size);
}
void operator delete(void* p, std::nothrow_t&)
{
ThreadAlloc::get()->dealloc(p);
ThreadAlloc::get_noncachable()->dealloc(p);
}
void operator delete[](void* p) EXCEPTSPEC
{
ThreadAlloc::get()->dealloc(p);
ThreadAlloc::get_noncachable()->dealloc(p);
}
void operator delete[](void* p, size_t size) EXCEPTSPEC
{
ThreadAlloc::get()->dealloc(p, size);
ThreadAlloc::get_noncachable()->dealloc(p, size);
}
void operator delete[](void* p, std::nothrow_t&)
{
ThreadAlloc::get()->dealloc(p);
ThreadAlloc::get_noncachable()->dealloc(p);
}