e2deab7a75
Refactor huge allocation to be managed by arenas (though the global red-black tree of huge allocations remains for lookup during deallocation). This is the logical conclusion of recent changes that 1) made per arena dss precedence apply to huge allocation, and 2) made it possible to replace the per arena chunk allocation/deallocation functions. Remove the top level huge stats, and replace them with per arena huge stats. Normalize function names and types to *dalloc* (some were *dealloc*). Remove the --enable-mremap option. As jemalloc currently operates, this is a performace regression for some applications, but planned work to logarithmically space huge size classes should provide similar amortized performance. The motivation for this change was that mremap-based huge reallocation forced leaky abstractions that prevented refactoring.
50 lines
2.1 KiB
C
50 lines
2.1 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_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_EXPORT void @je_@dallocx(void *ptr, int flags);
|
|
JEMALLOC_EXPORT size_t @je_@nallocx(size_t size, int flags);
|
|
|
|
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
|
|
|
|
typedef void *(chunk_alloc_t)(size_t, size_t, bool *, unsigned);
|
|
typedef bool (chunk_dalloc_t)(void *, size_t, unsigned);
|