4cfe55166e
This adds a new `sdallocx` function to the external API, allowing the size to be passed by the caller. It avoids some extra reads in the thread cache fast path. In the case where stats are enabled, this avoids the work of calculating the size from the pointer. An assertion validates the size that's passed in, so enabling debugging will allow users of the API to debug cases where an incorrect size is passed in. The performance win for a contrived microbenchmark doing an allocation and immediately freeing it is ~10%. It may have a different impact on a real workload. Closes #28
51 lines
2.2 KiB
C
51 lines
2.2 KiB
C
/*
|
|
* The @je_@ prefix on the following public symbol declarations is an artifact
|
|
* of namespace management, and should be omitted in application code unless
|
|
* JEMALLOC_NO_DEMANGLE is defined (see jemalloc_mangle@install_suffix@.h).
|
|
*/
|
|
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 int @je_@posix_memalign(void **memptr, size_t alignment,
|
|
size_t size) JEMALLOC_ATTR(nonnull(1));
|
|
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_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_EXPORT size_t @je_@xallocx(void *ptr, size_t size, size_t extra,
|
|
int flags);
|
|
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_EXPORT size_t @je_@nallocx(size_t size, int flags)
|
|
JEMALLOC_ATTR(pure);
|
|
|
|
JEMALLOC_EXPORT int @je_@mallctl(const char *name, void *oldp,
|
|
size_t *oldlenp, void *newp, size_t newlen);
|
|
JEMALLOC_EXPORT int @je_@mallctlnametomib(const char *name, size_t *mibp,
|
|
size_t *miblenp);
|
|
JEMALLOC_EXPORT int @je_@mallctlbymib(const size_t *mib, size_t miblen,
|
|
void *oldp, size_t *oldlenp, void *newp, size_t newlen);
|
|
JEMALLOC_EXPORT void @je_@malloc_stats_print(void (*write_cb)(void *,
|
|
const char *), void *@je_@cbopaque, const char *opts);
|
|
JEMALLOC_EXPORT size_t @je_@malloc_usable_size(
|
|
JEMALLOC_USABLE_SIZE_CONST void *ptr);
|
|
|
|
#ifdef JEMALLOC_OVERRIDE_MEMALIGN
|
|
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);
|
|
#endif
|