#ifndef mozilla_cxxalloc_h
#define mozilla_cxxalloc_h
#ifndef MOZALLOC_EXPORT_NEW
# define MOZALLOC_EXPORT_NEW MFBT_API
#endif
MOZALLOC_EXPORT_NEW void* operator new(size_t size) noexcept(false) {
return moz_xmalloc(size);
}
MOZALLOC_EXPORT_NEW void* operator new(size_t size,
const std::nothrow_t&) noexcept(true) {
return malloc_impl(size);
}
MOZALLOC_EXPORT_NEW void* operator new[](size_t size) noexcept(false) {
return moz_xmalloc(size);
}
MOZALLOC_EXPORT_NEW void* operator new[](size_t size,
const std::nothrow_t&) noexcept(true) {
#if defined(__GNUC__) && !defined(__clang__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Walloc-size-larger-than="
#endif
return malloc_impl(size);
#if defined(__GNUC__) && !defined(__clang__)
# pragma GCC diagnostic pop
#endif
}
MOZALLOC_EXPORT_NEW void operator delete(void* ptr) noexcept(true) {
return free_impl(ptr);
}
MOZALLOC_EXPORT_NEW void operator delete(void* ptr,
const std::nothrow_t&) noexcept(true) {
return free_impl(ptr);
}
MOZALLOC_EXPORT_NEW void operator delete[](void* ptr) noexcept(true) {
return free_impl(ptr);
}
MOZALLOC_EXPORT_NEW void operator delete[](
void* ptr, const std::nothrow_t&) noexcept(true) {
return free_impl(ptr);
}
#if defined(XP_WIN)
MOZALLOC_EXPORT_NEW void operator delete(void* ptr,
size_t ) noexcept(true) {
return free_impl(ptr);
}
MOZALLOC_EXPORT_NEW void operator delete[](void* ptr,
size_t ) noexcept(true) {
return free_impl(ptr);
}
#endif
#endif