Avoid function prototype incompatibilities.

Add various function attributes to the exported functions to give the
compiler more information to work with during optimization, and also
specify throw() when compiling with C++ on Linux, in order to adequately
match what __THROW does in glibc.

This resolves #237.
This commit is contained in:
Jason Evans 2015-07-10 14:33:00 -07:00
parent dde067264d
commit ae93d6bf36
7 changed files with 100 additions and 49 deletions

View file

@ -7,44 +7,52 @@ extern JEMALLOC_EXPORT const char *@je_@malloc_conf;
extern JEMALLOC_EXPORT void (*@je_@malloc_message)(void *cbopaque,
const char *s);
JEMALLOC_EXPORT void *@je_@malloc(size_t size) JEMALLOC_ATTR(malloc);
JEMALLOC_EXPORT void *@je_@calloc(size_t num, size_t size)
JEMALLOC_ATTR(malloc);
JEMALLOC_EXPORT void *@je_@malloc(size_t size) JEMALLOC_CXX_THROW
JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT void *@je_@calloc(size_t num, size_t size) JEMALLOC_CXX_THROW
JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE2(1, 2) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT int @je_@posix_memalign(void **memptr, size_t alignment,
size_t size) JEMALLOC_ATTR(nonnull(1));
size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(nonnull(1))
JEMALLOC_ALLOC_SIZE(2) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT void *@je_@aligned_alloc(size_t alignment, size_t size)
JEMALLOC_ATTR(malloc);
JEMALLOC_EXPORT void *@je_@realloc(void *ptr, size_t size);
JEMALLOC_EXPORT void @je_@free(void *ptr);
JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(2)
JEMALLOC_NOTHROW;
JEMALLOC_EXPORT void *@je_@realloc(void *ptr, size_t size) JEMALLOC_CXX_THROW
JEMALLOC_ALLOC_SIZE(2) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT void @je_@free(void *ptr) JEMALLOC_CXX_THROW
JEMALLOC_NOTHROW;
JEMALLOC_EXPORT void *@je_@mallocx(size_t size, int flags)
JEMALLOC_ATTR(malloc);
JEMALLOC_EXPORT void *@je_@rallocx(void *ptr, size_t size, int flags);
JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT void *@je_@rallocx(void *ptr, size_t size, int flags)
JEMALLOC_ALLOC_SIZE(2) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT size_t @je_@xallocx(void *ptr, size_t size, size_t extra,
int flags);
int flags) JEMALLOC_ALLOC_SIZE(2) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT size_t @je_@sallocx(const void *ptr, int flags)
JEMALLOC_ATTR(pure);
JEMALLOC_EXPORT void @je_@dallocx(void *ptr, int flags);
JEMALLOC_EXPORT void @je_@sdallocx(void *ptr, size_t size, int flags);
JEMALLOC_ATTR(pure) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT void @je_@dallocx(void *ptr, int flags) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT void @je_@sdallocx(void *ptr, size_t size, int flags)
JEMALLOC_NOTHROW;
JEMALLOC_EXPORT size_t @je_@nallocx(size_t size, int flags)
JEMALLOC_ATTR(pure);
JEMALLOC_ATTR(pure) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT int @je_@mallctl(const char *name, void *oldp,
size_t *oldlenp, void *newp, size_t newlen);
size_t *oldlenp, void *newp, size_t newlen) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT int @je_@mallctlnametomib(const char *name, size_t *mibp,
size_t *miblenp);
size_t *miblenp) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT int @je_@mallctlbymib(const size_t *mib, size_t miblen,
void *oldp, size_t *oldlenp, void *newp, size_t newlen);
void *oldp, size_t *oldlenp, void *newp, size_t newlen) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT void @je_@malloc_stats_print(void (*write_cb)(void *,
const char *), void *@je_@cbopaque, const char *opts);
const char *), void *@je_@cbopaque, const char *opts) JEMALLOC_NOTHROW;
JEMALLOC_EXPORT size_t @je_@malloc_usable_size(
JEMALLOC_USABLE_SIZE_CONST void *ptr);
JEMALLOC_USABLE_SIZE_CONST void *ptr) JEMALLOC_CXX_THROW JEMALLOC_NOTHROW;
#ifdef JEMALLOC_OVERRIDE_MEMALIGN
JEMALLOC_EXPORT void * @je_@memalign(size_t alignment, size_t size)
JEMALLOC_EXPORT void *@je_@memalign(size_t alignment, size_t size)
JEMALLOC_ATTR(malloc);
#endif
#ifdef JEMALLOC_OVERRIDE_VALLOC
JEMALLOC_EXPORT void * @je_@valloc(size_t size) JEMALLOC_ATTR(malloc);
JEMALLOC_EXPORT void *@je_@valloc(size_t size) JEMALLOC_CXX_THROW
JEMALLOC_ATTR(malloc);
#endif