aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2018-08-27 14:40:30 -0700
committerChristopher Ferris <cferris@google.com>2018-09-06 13:08:46 -0700
commit7eecc47efac8cef90e806aca2758ef0fca63cf7a (patch)
tree59613c4bb23fd14729b92618fd17f0e11ee42668 /include
parent4c5028eda455ccc3462b5cdf086780a81a2a7b39 (diff)
downloadplatform_external_jemalloc_new-7eecc47efac8cef90e806aca2758ef0fca63cf7a.tar.gz
platform_external_jemalloc_new-7eecc47efac8cef90e806aca2758ef0fca63cf7a.tar.bz2
platform_external_jemalloc_new-7eecc47efac8cef90e806aca2758ef0fca63cf7a.zip
Add bp file and generated files.
This does not add any android specific changes. Those will come in a follow-up cl. Test: Builds, and all unit tests pass on a hikey. Change-Id: Ibac11b324afeac93a0c93d19689be48458d56f56
Diffstat (limited to 'include')
-rw-r--r--include/jemalloc/internal/jemalloc_internal_defs.h383
-rw-r--r--include/jemalloc/internal/jemalloc_preamble.h194
-rw-r--r--include/jemalloc/internal/private_namespace.h382
-rw-r--r--include/jemalloc/internal/private_namespace_jet.h389
-rw-r--r--include/jemalloc/internal/public_namespace.h22
-rw-r--r--include/jemalloc/internal/public_unnamespace.h22
-rw-r--r--include/jemalloc/internal/size_classes.h1428
-rw-r--r--include/jemalloc/jemalloc.h425
-rw-r--r--include/jemalloc/jemalloc_defs.h50
-rw-r--r--include/jemalloc/jemalloc_macros.h122
-rw-r--r--include/jemalloc/jemalloc_mangle.h66
-rw-r--r--include/jemalloc/jemalloc_mangle_jet.h66
-rw-r--r--include/jemalloc/jemalloc_protos.h66
-rw-r--r--include/jemalloc/jemalloc_protos_jet.h66
-rw-r--r--include/jemalloc/jemalloc_rename.h29
-rw-r--r--include/jemalloc/jemalloc_typedefs.h77
16 files changed, 3787 insertions, 0 deletions
diff --git a/include/jemalloc/internal/jemalloc_internal_defs.h b/include/jemalloc/internal/jemalloc_internal_defs.h
new file mode 100644
index 00000000..99d1ba3e
--- /dev/null
+++ b/include/jemalloc/internal/jemalloc_internal_defs.h
@@ -0,0 +1,383 @@
+/* include/jemalloc/internal/jemalloc_internal_defs.h. Generated from jemalloc_internal_defs.h.in by configure. */
+#ifndef JEMALLOC_INTERNAL_DEFS_H_
+#define JEMALLOC_INTERNAL_DEFS_H_
+/*
+ * If JEMALLOC_PREFIX is defined via --with-jemalloc-prefix, it will cause all
+ * public APIs to be prefixed. This makes it possible, with some care, to use
+ * multiple allocators simultaneously.
+ */
+#define JEMALLOC_PREFIX "je_"
+#define JEMALLOC_CPREFIX "JE_"
+
+/*
+ * Define overrides for non-standard allocator-related functions if they are
+ * present on the system.
+ */
+/* #undef JEMALLOC_OVERRIDE___LIBC_CALLOC */
+/* #undef JEMALLOC_OVERRIDE___LIBC_FREE */
+/* #undef JEMALLOC_OVERRIDE___LIBC_MALLOC */
+/* #undef JEMALLOC_OVERRIDE___LIBC_MEMALIGN */
+/* #undef JEMALLOC_OVERRIDE___LIBC_REALLOC */
+/* #undef JEMALLOC_OVERRIDE___LIBC_VALLOC */
+/* #undef JEMALLOC_OVERRIDE___POSIX_MEMALIGN */
+
+/*
+ * JEMALLOC_PRIVATE_NAMESPACE is used as a prefix for all library-private APIs.
+ * For shared libraries, symbol visibility mechanisms prevent these symbols
+ * from being exported, but for static libraries, naming collisions are a real
+ * possibility.
+ */
+#define JEMALLOC_PRIVATE_NAMESPACE je_
+
+/*
+ * Hyper-threaded CPUs may need a special instruction inside spin loops in
+ * order to yield to another virtual CPU.
+ */
+#if defined(__x86_64__)
+#define CPU_SPINWAIT __asm__ volatile("pause")
+/* 1 if CPU_SPINWAIT is defined, 0 otherwise. */
+#define HAVE_CPU_SPINWAIT 1
+#else
+#define CPU_SPINWAIT
+/* 1 if CPU_SPINWAIT is defined, 0 otherwise. */
+#define HAVE_CPU_SPINWAIT 0
+#endif
+
+/*
+ * Number of significant bits in virtual addresses. This may be less than the
+ * total number of bits in a pointer, e.g. on x64, for which the uppermost 16
+ * bits are the same as bit 47.
+ */
+#if defined(__x86_64__)
+#define LG_VADDR 57
+#elif defined(__LP64__)
+#define LG_VADDR 48
+#else
+#define LG_VADDR 32
+#endif
+
+/* Defined if C11 atomics are available. */
+#define JEMALLOC_C11_ATOMICS 1
+
+/* Defined if GCC __atomic atomics are available. */
+#define JEMALLOC_GCC_ATOMIC_ATOMICS 1
+
+/* Defined if GCC __sync atomics are available. */
+#define JEMALLOC_GCC_SYNC_ATOMICS 1
+
+/*
+ * Defined if __sync_add_and_fetch(uint32_t *, uint32_t) and
+ * __sync_sub_and_fetch(uint32_t *, uint32_t) are available, despite
+ * __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 not being defined (which means the
+ * functions are defined in libgcc instead of being inlines).
+ */
+/* #undef JE_FORCE_SYNC_COMPARE_AND_SWAP_4 */
+
+/*
+ * Defined if __sync_add_and_fetch(uint64_t *, uint64_t) and
+ * __sync_sub_and_fetch(uint64_t *, uint64_t) are available, despite
+ * __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 not being defined (which means the
+ * functions are defined in libgcc instead of being inlines).
+ */
+/* #undef JE_FORCE_SYNC_COMPARE_AND_SWAP_8 */
+
+/*
+ * Defined if __builtin_clz() and __builtin_clzl() are available.
+ */
+#define JEMALLOC_HAVE_BUILTIN_CLZ
+
+/*
+ * Defined if os_unfair_lock_*() functions are available, as provided by Darwin.
+ */
+/* #undef JEMALLOC_OS_UNFAIR_LOCK */
+
+/*
+ * Defined if OSSpin*() functions are available, as provided by Darwin, and
+ * documented in the spinlock(3) manual page.
+ */
+/* #undef JEMALLOC_OSSPIN */
+
+/* Defined if syscall(2) is usable. */
+#define JEMALLOC_USE_SYSCALL
+
+/*
+ * Defined if secure_getenv(3) is available.
+ */
+/* #undef JEMALLOC_HAVE_SECURE_GETENV */
+
+/*
+ * Defined if issetugid(2) is available.
+ */
+/* #undef JEMALLOC_HAVE_ISSETUGID */
+
+/* Defined if pthread_atfork(3) is available. */
+#define JEMALLOC_HAVE_PTHREAD_ATFORK
+
+/* Defined if pthread_setname_np(3) is available. */
+#define JEMALLOC_HAVE_PTHREAD_SETNAME_NP
+
+/*
+ * Defined if clock_gettime(CLOCK_MONOTONIC_COARSE, ...) is available.
+ */
+#define JEMALLOC_HAVE_CLOCK_MONOTONIC_COARSE 1
+
+/*
+ * Defined if clock_gettime(CLOCK_MONOTONIC, ...) is available.
+ */
+#define JEMALLOC_HAVE_CLOCK_MONOTONIC 1
+
+/*
+ * Defined if mach_absolute_time() is available.
+ */
+/* #undef JEMALLOC_HAVE_MACH_ABSOLUTE_TIME */
+
+/*
+ * Defined if _malloc_thread_cleanup() exists. At least in the case of
+ * FreeBSD, pthread_key_create() allocates, which if used during malloc
+ * bootstrapping will cause recursion into the pthreads library. Therefore, if
+ * _malloc_thread_cleanup() exists, use it as the basis for thread cleanup in
+ * malloc_tsd.
+ */
+/* #undef JEMALLOC_MALLOC_THREAD_CLEANUP */
+
+/*
+ * Defined if threaded initialization is known to be safe on this platform.
+ * Among other things, it must be possible to initialize a mutex without
+ * triggering allocation in order for threaded allocation to be safe.
+ */
+#define JEMALLOC_THREADED_INIT
+
+/*
+ * Defined if the pthreads implementation defines
+ * _pthread_mutex_init_calloc_cb(), in which case the function is used in order
+ * to avoid recursive allocation during mutex initialization.
+ */
+/* #undef JEMALLOC_MUTEX_INIT_CB */
+
+/* Non-empty if the tls_model attribute is supported. */
+#define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec")))
+
+/*
+ * JEMALLOC_DEBUG enables assertions and other sanity checks, and disables
+ * inline functions.
+ */
+/* #undef JEMALLOC_DEBUG */
+
+/* JEMALLOC_STATS enables statistics calculation. */
+#define JEMALLOC_STATS
+
+/* JEMALLOC_PROF enables allocation profiling. */
+/* #undef JEMALLOC_PROF */
+
+/* Use libunwind for profile backtracing if defined. */
+/* #undef JEMALLOC_PROF_LIBUNWIND */
+
+/* Use libgcc for profile backtracing if defined. */
+/* #undef JEMALLOC_PROF_LIBGCC */
+
+/* Use gcc intrinsics for profile backtracing if defined. */
+/* #undef JEMALLOC_PROF_GCC */
+
+/*
+ * JEMALLOC_DSS enables use of sbrk(2) to allocate extents from the data storage
+ * segment (DSS).
+ */
+#define JEMALLOC_DSS
+
+/* Support memory filling (junk/zero). */
+#define JEMALLOC_FILL
+
+/* Support utrace(2)-based tracing. */
+/* #undef JEMALLOC_UTRACE */
+
+/* Support optional abort() on OOM. */
+/* #undef JEMALLOC_XMALLOC */
+
+/* Support lazy locking (avoid locking unless a second thread is launched). */
+/* #undef JEMALLOC_LAZY_LOCK */
+
+/*
+ * Minimum allocation alignment is 2^LG_QUANTUM bytes (ignoring tiny size
+ * classes).
+ */
+/* #undef LG_QUANTUM */
+
+/* One page is 2^LG_PAGE bytes. */
+#define LG_PAGE 12
+
+/*
+ * One huge page is 2^LG_HUGEPAGE bytes. Note that this is defined even if the
+ * system does not explicitly support huge pages; system calls that require
+ * explicit huge page support are separately configured.
+ */
+#define LG_HUGEPAGE 21
+
+/*
+ * If defined, adjacent virtual memory mappings with identical attributes
+ * automatically coalesce, and they fragment when changes are made to subranges.
+ * This is the normal order of things for mmap()/munmap(), but on Windows
+ * VirtualAlloc()/VirtualFree() operations must be precisely matched, i.e.
+ * mappings do *not* coalesce/fragment.
+ */
+#define JEMALLOC_MAPS_COALESCE
+
+/*
+ * If defined, retain memory for later reuse by default rather than using e.g.
+ * munmap() to unmap freed extents. This is enabled on 64-bit Linux because
+ * common sequences of mmap()/munmap() calls will cause virtual memory map
+ * holes.
+ */
+#define JEMALLOC_RETAIN
+
+/* TLS is used to map arenas and magazine caches to threads. */
+/* #undef JEMALLOC_TLS */
+
+/*
+ * Used to mark unreachable code to quiet "end of non-void" compiler warnings.
+ * Don't use this directly; instead use unreachable() from util.h
+ */
+#define JEMALLOC_INTERNAL_UNREACHABLE __builtin_unreachable
+
+/*
+ * ffs*() functions to use for bitmapping. Don't use these directly; instead,
+ * use ffs_*() from util.h.
+ */
+#define JEMALLOC_INTERNAL_FFSLL __builtin_ffsll
+#define JEMALLOC_INTERNAL_FFSL __builtin_ffsl
+#define JEMALLOC_INTERNAL_FFS __builtin_ffs
+
+/*
+ * If defined, explicitly attempt to more uniformly distribute large allocation
+ * pointer alignments across all cache indices.
+ */
+#define JEMALLOC_CACHE_OBLIVIOUS
+
+/*
+ * If defined, enable logging facilities. We make this a configure option to
+ * avoid taking extra branches everywhere.
+ */
+/* #undef JEMALLOC_LOG */
+
+/*
+ * Darwin (OS X) uses zones to work around Mach-O symbol override shortcomings.
+ */
+/* #undef JEMALLOC_ZONE */
+
+/*
+ * Methods for determining whether the OS overcommits.
+ * JEMALLOC_PROC_SYS_VM_OVERCOMMIT_MEMORY: Linux's
+ * /proc/sys/vm.overcommit_memory file.
+ * JEMALLOC_SYSCTL_VM_OVERCOMMIT: FreeBSD's vm.overcommit sysctl.
+ */
+/* #undef JEMALLOC_SYSCTL_VM_OVERCOMMIT */
+#define JEMALLOC_PROC_SYS_VM_OVERCOMMIT_MEMORY
+
+/* Defined if madvise(2) is available. */
+#define JEMALLOC_HAVE_MADVISE
+
+/*
+ * Defined if transparent huge pages are supported via the MADV_[NO]HUGEPAGE
+ * arguments to madvise(2).
+ */
+#define JEMALLOC_HAVE_MADVISE_HUGE
+
+/*
+ * Methods for purging unused pages differ between operating systems.
+ *
+ * madvise(..., MADV_FREE) : This marks pages as being unused, such that they
+ * will be discarded rather than swapped out.
+ * madvise(..., MADV_DONTNEED) : If JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS is
+ * defined, this immediately discards pages,
+ * such that new pages will be demand-zeroed if
+ * the address region is later touched;
+ * otherwise this behaves similarly to
+ * MADV_FREE, though typically with higher
+ * system overhead.
+ */
+#define JEMALLOC_PURGE_MADVISE_FREE
+#define JEMALLOC_PURGE_MADVISE_DONTNEED
+#define JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS
+
+/* Defined if madvise(2) is available but MADV_FREE is not (x86 Linux only). */
+/* #undef JEMALLOC_DEFINE_MADVISE_FREE */
+
+/*
+ * Defined if MADV_DO[NT]DUMP is supported as an argument to madvise.
+ */
+#define JEMALLOC_MADVISE_DONTDUMP
+
+/*
+ * Defined if transparent huge pages (THPs) are supported via the
+ * MADV_[NO]HUGEPAGE arguments to madvise(2), and THP support is enabled.
+ */
+/* #undef JEMALLOC_THP */
+
+/* Define if operating system has alloca.h header. */
+#define JEMALLOC_HAS_ALLOCA_H 1
+
+/* C99 restrict keyword supported. */
+#define JEMALLOC_HAS_RESTRICT 1
+
+/* For use by hash code. */
+/* #undef JEMALLOC_BIG_ENDIAN */
+
+/* sizeof(int) == 2^LG_SIZEOF_INT. */
+#define LG_SIZEOF_INT 2
+
+/* sizeof(long) == 2^LG_SIZEOF_LONG. */
+#ifdef __LP64__
+#define LG_SIZEOF_LONG 3
+#else
+#define LG_SIZEOF_LONG 2
+#endif
+
+/* sizeof(long long) == 2^LG_SIZEOF_LONG_LONG. */
+#define LG_SIZEOF_LONG_LONG 3
+
+/* sizeof(intmax_t) == 2^LG_SIZEOF_INTMAX_T. */
+#define LG_SIZEOF_INTMAX_T 3
+
+/* glibc malloc hooks (__malloc_hook, __realloc_hook, __free_hook). */
+/* #undef JEMALLOC_GLIBC_MALLOC_HOOK */
+
+/* glibc memalign hook. */
+/* #undef JEMALLOC_GLIBC_MEMALIGN_HOOK */
+
+/* pthread support */
+#define JEMALLOC_HAVE_PTHREAD
+
+/* dlsym() support */
+#define JEMALLOC_HAVE_DLSYM
+
+/* Adaptive mutex support in pthreads. */
+/* #undef JEMALLOC_HAVE_PTHREAD_MUTEX_ADAPTIVE_NP */
+
+/* GNU specific sched_getcpu support */
+#define JEMALLOC_HAVE_SCHED_GETCPU
+
+/* GNU specific sched_setaffinity support */
+#define JEMALLOC_HAVE_SCHED_SETAFFINITY
+
+/*
+ * If defined, all the features necessary for background threads are present.
+ */
+#define JEMALLOC_BACKGROUND_THREAD 1
+
+/*
+ * If defined, jemalloc symbols are not exported (doesn't work when
+ * JEMALLOC_PREFIX is not defined).
+ */
+/* #undef JEMALLOC_EXPORT */
+
+/* config.malloc_conf options string. */
+#define JEMALLOC_CONFIG_MALLOC_CONF ""
+
+/* If defined, jemalloc takes the malloc/free/etc. symbol names. */
+/* #undef JEMALLOC_IS_MALLOC */
+
+/*
+ * Defined if strerror_r returns char * if _GNU_SOURCE is defined.
+ */
+#define JEMALLOC_STRERROR_R_RETURNS_CHAR_WITH_GNU_SOURCE
+
+#endif /* JEMALLOC_INTERNAL_DEFS_H_ */
diff --git a/include/jemalloc/internal/jemalloc_preamble.h b/include/jemalloc/internal/jemalloc_preamble.h
new file mode 100644
index 00000000..a373a8b2
--- /dev/null
+++ b/include/jemalloc/internal/jemalloc_preamble.h
@@ -0,0 +1,194 @@
+#ifndef JEMALLOC_PREAMBLE_H
+#define JEMALLOC_PREAMBLE_H
+
+#include "jemalloc_internal_defs.h"
+#include "jemalloc/internal/jemalloc_internal_decls.h"
+
+#ifdef JEMALLOC_UTRACE
+#include <sys/ktrace.h>
+#endif
+
+#define JEMALLOC_NO_DEMANGLE
+#ifdef JEMALLOC_JET
+# undef JEMALLOC_IS_MALLOC
+# define JEMALLOC_N(n) jet_##n
+# include "jemalloc/internal/public_namespace.h"
+# define JEMALLOC_NO_RENAME
+# include "../jemalloc.h"
+# undef JEMALLOC_NO_RENAME
+#else
+# define JEMALLOC_N(n) je_##n
+# include "../jemalloc.h"
+#endif
+
+#if (defined(JEMALLOC_OSATOMIC) || defined(JEMALLOC_OSSPIN))
+#include <libkern/OSAtomic.h>
+#endif
+
+#ifdef JEMALLOC_ZONE
+#include <mach/mach_error.h>
+#include <mach/mach_init.h>
+#include <mach/vm_map.h>
+#endif
+
+#include "jemalloc/internal/jemalloc_internal_macros.h"
+
+/*
+ * Note that the ordering matters here; the hook itself is name-mangled. We
+ * want the inclusion of hooks to happen early, so that we hook as much as
+ * possible.
+ */
+#ifndef JEMALLOC_NO_PRIVATE_NAMESPACE
+# ifndef JEMALLOC_JET
+# include "jemalloc/internal/private_namespace.h"
+# else
+# include "jemalloc/internal/private_namespace_jet.h"
+# endif
+#endif
+#include "jemalloc/internal/hooks.h"
+
+#ifdef JEMALLOC_DEFINE_MADVISE_FREE
+# define JEMALLOC_MADV_FREE 8
+#endif
+
+static const bool config_debug =
+#ifdef JEMALLOC_DEBUG
+ true
+#else
+ false
+#endif
+ ;
+static const bool have_dss =
+#ifdef JEMALLOC_DSS
+ true
+#else
+ false
+#endif
+ ;
+static const bool have_madvise_huge =
+#ifdef JEMALLOC_HAVE_MADVISE_HUGE
+ true
+#else
+ false
+#endif
+ ;
+static const bool config_fill =
+#ifdef JEMALLOC_FILL
+ true
+#else
+ false
+#endif
+ ;
+static const bool config_lazy_lock =
+#ifdef JEMALLOC_LAZY_LOCK
+ true
+#else
+ false
+#endif
+ ;
+static const char * const config_malloc_conf = JEMALLOC_CONFIG_MALLOC_CONF;
+static const bool config_prof =
+#ifdef JEMALLOC_PROF
+ true
+#else
+ false
+#endif
+ ;
+static const bool config_prof_libgcc =
+#ifdef JEMALLOC_PROF_LIBGCC
+ true
+#else
+ false
+#endif
+ ;
+static const bool config_prof_libunwind =
+#ifdef JEMALLOC_PROF_LIBUNWIND
+ true
+#else
+ false
+#endif
+ ;
+static const bool maps_coalesce =
+#ifdef JEMALLOC_MAPS_COALESCE
+ true
+#else
+ false
+#endif
+ ;
+static const bool config_stats =
+#ifdef JEMALLOC_STATS
+ true
+#else
+ false
+#endif
+ ;
+static const bool config_tls =
+#ifdef JEMALLOC_TLS
+ true
+#else
+ false
+#endif
+ ;
+static const bool config_utrace =
+#ifdef JEMALLOC_UTRACE
+ true
+#else
+ false
+#endif
+ ;
+static const bool config_xmalloc =
+#ifdef JEMALLOC_XMALLOC
+ true
+#else
+ false
+#endif
+ ;
+static const bool config_cache_oblivious =
+#ifdef JEMALLOC_CACHE_OBLIVIOUS
+ true
+#else
+ false
+#endif
+ ;
+/*
+ * Undocumented, for jemalloc development use only at the moment. See the note
+ * in jemalloc/internal/log.h.
+ */
+static const bool config_log =
+#ifdef JEMALLOC_LOG
+ true
+#else
+ false
+#endif
+ ;
+#ifdef JEMALLOC_HAVE_SCHED_GETCPU
+/* Currently percpu_arena depends on sched_getcpu. */
+#define JEMALLOC_PERCPU_ARENA
+#endif
+static const bool have_percpu_arena =
+#ifdef JEMALLOC_PERCPU_ARENA
+ true
+#else
+ false
+#endif
+ ;
+/*
+ * Undocumented, and not recommended; the application should take full
+ * responsibility for tracking provenance.
+ */
+static const bool force_ivsalloc =
+#ifdef JEMALLOC_FORCE_IVSALLOC
+ true
+#else
+ false
+#endif
+ ;
+static const bool have_background_thread =
+#ifdef JEMALLOC_BACKGROUND_THREAD
+ true
+#else
+ false
+#endif
+ ;
+
+#endif /* JEMALLOC_PREAMBLE_H */
diff --git a/include/jemalloc/internal/private_namespace.h b/include/jemalloc/internal/private_namespace.h
new file mode 100644
index 00000000..8744f167
--- /dev/null
+++ b/include/jemalloc/internal/private_namespace.h
@@ -0,0 +1,382 @@
+#define a0dalloc JEMALLOC_N(a0dalloc)
+#define a0malloc JEMALLOC_N(a0malloc)
+#define arena_choose_hard JEMALLOC_N(arena_choose_hard)
+#define arena_cleanup JEMALLOC_N(arena_cleanup)
+#define arena_init JEMALLOC_N(arena_init)
+#define arena_migrate JEMALLOC_N(arena_migrate)
+#define arenas JEMALLOC_N(arenas)
+#define arena_set JEMALLOC_N(arena_set)
+#define arenas_lock JEMALLOC_N(arenas_lock)
+#define arenas_tdata_cleanup JEMALLOC_N(arenas_tdata_cleanup)
+#define arena_tdata_get_hard JEMALLOC_N(arena_tdata_get_hard)
+#define bootstrap_calloc JEMALLOC_N(bootstrap_calloc)
+#define bootstrap_free JEMALLOC_N(bootstrap_free)
+#define bootstrap_malloc JEMALLOC_N(bootstrap_malloc)
+#define iarena_cleanup JEMALLOC_N(iarena_cleanup)
+#define jemalloc_postfork_child JEMALLOC_N(jemalloc_postfork_child)
+#define jemalloc_postfork_parent JEMALLOC_N(jemalloc_postfork_parent)
+#define jemalloc_prefork JEMALLOC_N(jemalloc_prefork)
+#define malloc_initialized JEMALLOC_N(malloc_initialized)
+#define malloc_slow JEMALLOC_N(malloc_slow)
+#define narenas_auto JEMALLOC_N(narenas_auto)
+#define narenas_total_get JEMALLOC_N(narenas_total_get)
+#define ncpus JEMALLOC_N(ncpus)
+#define opt_abort JEMALLOC_N(opt_abort)
+#define opt_abort_conf JEMALLOC_N(opt_abort_conf)
+#define opt_junk JEMALLOC_N(opt_junk)
+#define opt_junk_alloc JEMALLOC_N(opt_junk_alloc)
+#define opt_junk_free JEMALLOC_N(opt_junk_free)
+#define opt_narenas JEMALLOC_N(opt_narenas)
+#define opt_utrace JEMALLOC_N(opt_utrace)
+#define opt_xmalloc JEMALLOC_N(opt_xmalloc)
+#define opt_zero JEMALLOC_N(opt_zero)
+#define arena_alloc_junk_small JEMALLOC_N(arena_alloc_junk_small)
+#define arena_basic_stats_merge JEMALLOC_N(arena_basic_stats_merge)
+#define arena_boot JEMALLOC_N(arena_boot)
+#define arena_dalloc_bin_junked_locked JEMALLOC_N(arena_dalloc_bin_junked_locked)
+#define arena_dalloc_junk_small JEMALLOC_N(arena_dalloc_junk_small)
+#define arena_dalloc_promoted JEMALLOC_N(arena_dalloc_promoted)
+#define arena_dalloc_small JEMALLOC_N(arena_dalloc_small)
+#define arena_decay JEMALLOC_N(arena_decay)
+#define arena_destroy JEMALLOC_N(arena_destroy)
+#define arena_dirty_decay_ms_default_get JEMALLOC_N(arena_dirty_decay_ms_default_get)
+#define arena_dirty_decay_ms_default_set JEMALLOC_N(arena_dirty_decay_ms_default_set)
+#define arena_dirty_decay_ms_get JEMALLOC_N(arena_dirty_decay_ms_get)
+#define arena_dirty_decay_ms_set JEMALLOC_N(arena_dirty_decay_ms_set)
+#define arena_dss_prec_get JEMALLOC_N(arena_dss_prec_get)
+#define arena_dss_prec_set JEMALLOC_N(arena_dss_prec_set)
+#define arena_extent_alloc_large JEMALLOC_N(arena_extent_alloc_large)
+#define arena_extent_dalloc_large_prep JEMALLOC_N(arena_extent_dalloc_large_prep)
+#define arena_extent_ralloc_large_expand JEMALLOC_N(arena_extent_ralloc_large_expand)
+#define arena_extent_ralloc_large_shrink JEMALLOC_N(arena_extent_ralloc_large_shrink)
+#define arena_extents_dirty_dalloc JEMALLOC_N(arena_extents_dirty_dalloc)
+#define arena_extent_sn_next JEMALLOC_N(arena_extent_sn_next)
+#define arena_malloc_hard JEMALLOC_N(arena_malloc_hard)
+#define arena_muzzy_decay_ms_default_get JEMALLOC_N(arena_muzzy_decay_ms_default_get)
+#define arena_muzzy_decay_ms_default_set JEMALLOC_N(arena_muzzy_decay_ms_default_set)
+#define arena_muzzy_decay_ms_get JEMALLOC_N(arena_muzzy_decay_ms_get)
+#define arena_muzzy_decay_ms_set JEMALLOC_N(arena_muzzy_decay_ms_set)
+#define arena_new JEMALLOC_N(arena_new)
+#define arena_nthreads_dec JEMALLOC_N(arena_nthreads_dec)
+#define arena_nthreads_get JEMALLOC_N(arena_nthreads_get)
+#define arena_nthreads_inc JEMALLOC_N(arena_nthreads_inc)
+#define arena_palloc JEMALLOC_N(arena_palloc)
+#define arena_postfork_child JEMALLOC_N(arena_postfork_child)
+#define arena_postfork_parent JEMALLOC_N(arena_postfork_parent)
+#define arena_prefork0 JEMALLOC_N(arena_prefork0)
+#define arena_prefork1 JEMALLOC_N(arena_prefork1)
+#define arena_prefork2 JEMALLOC_N(arena_prefork2)
+#define arena_prefork3 JEMALLOC_N(arena_prefork3)
+#define arena_prefork4 JEMALLOC_N(arena_prefork4)
+#define arena_prefork5 JEMALLOC_N(arena_prefork5)
+#define arena_prefork6 JEMALLOC_N(arena_prefork6)
+#define arena_prefork7 JEMALLOC_N(arena_prefork7)
+#define arena_prof_promote JEMALLOC_N(arena_prof_promote)
+#define arena_ralloc JEMALLOC_N(arena_ralloc)
+#define arena_ralloc_no_move JEMALLOC_N(arena_ralloc_no_move)
+#define arena_reset JEMALLOC_N(arena_reset)
+#define arena_retain_grow_limit_get_set JEMALLOC_N(arena_retain_grow_limit_get_set)
+#define arena_stats_merge JEMALLOC_N(arena_stats_merge)
+#define arena_tcache_fill_small JEMALLOC_N(arena_tcache_fill_small)
+#define h_steps JEMALLOC_N(h_steps)
+#define opt_dirty_decay_ms JEMALLOC_N(opt_dirty_decay_ms)
+#define opt_muzzy_decay_ms JEMALLOC_N(opt_muzzy_decay_ms)
+#define opt_percpu_arena JEMALLOC_N(opt_percpu_arena)
+#define percpu_arena_mode_names JEMALLOC_N(percpu_arena_mode_names)
+#define background_thread_boot0 JEMALLOC_N(background_thread_boot0)
+#define background_thread_boot1 JEMALLOC_N(background_thread_boot1)
+#define background_thread_create JEMALLOC_N(background_thread_create)
+#define background_thread_ctl_init JEMALLOC_N(background_thread_ctl_init)
+#define background_thread_enabled_state JEMALLOC_N(background_thread_enabled_state)
+#define background_thread_info JEMALLOC_N(background_thread_info)
+#define background_thread_interval_check JEMALLOC_N(background_thread_interval_check)
+#define background_thread_lock JEMALLOC_N(background_thread_lock)
+#define background_thread_postfork_child JEMALLOC_N(background_thread_postfork_child)
+#define background_thread_postfork_parent JEMALLOC_N(background_thread_postfork_parent)
+#define background_thread_prefork0 JEMALLOC_N(background_thread_prefork0)
+#define background_thread_prefork1 JEMALLOC_N(background_thread_prefork1)
+#define background_threads_disable JEMALLOC_N(background_threads_disable)
+#define background_threads_enable JEMALLOC_N(background_threads_enable)
+#define background_thread_stats_read JEMALLOC_N(background_thread_stats_read)
+#define can_enable_background_thread JEMALLOC_N(can_enable_background_thread)
+#define max_background_threads JEMALLOC_N(max_background_threads)
+#define n_background_threads JEMALLOC_N(n_background_threads)
+#define opt_background_thread JEMALLOC_N(opt_background_thread)
+#define opt_max_background_threads JEMALLOC_N(opt_max_background_threads)
+#define pthread_create_wrapper JEMALLOC_N(pthread_create_wrapper)
+#define b0get JEMALLOC_N(b0get)
+#define base_alloc JEMALLOC_N(base_alloc)
+#define base_alloc_extent JEMALLOC_N(base_alloc_extent)
+#define base_boot JEMALLOC_N(base_boot)
+#define base_delete JEMALLOC_N(base_delete)
+#define base_extent_hooks_get JEMALLOC_N(base_extent_hooks_get)
+#define base_extent_hooks_set JEMALLOC_N(base_extent_hooks_set)
+#define base_new JEMALLOC_N(base_new)
+#define base_postfork_child JEMALLOC_N(base_postfork_child)
+#define base_postfork_parent JEMALLOC_N(base_postfork_parent)
+#define base_prefork JEMALLOC_N(base_prefork)
+#define base_stats_get JEMALLOC_N(base_stats_get)
+#define metadata_thp_mode_names JEMALLOC_N(metadata_thp_mode_names)
+#define opt_metadata_thp JEMALLOC_N(opt_metadata_thp)
+#define bin_infos JEMALLOC_N(bin_infos)
+#define bin_init JEMALLOC_N(bin_init)
+#define bin_postfork_child JEMALLOC_N(bin_postfork_child)
+#define bin_postfork_parent JEMALLOC_N(bin_postfork_parent)
+#define bin_prefork JEMALLOC_N(bin_prefork)
+#define bitmap_info_init JEMALLOC_N(bitmap_info_init)
+#define bitmap_init JEMALLOC_N(bitmap_init)
+#define bitmap_size JEMALLOC_N(bitmap_size)
+#define ckh_count JEMALLOC_N(ckh_count)
+#define ckh_delete JEMALLOC_N(ckh_delete)
+#define ckh_insert JEMALLOC_N(ckh_insert)
+#define ckh_iter JEMALLOC_N(ckh_iter)
+#define ckh_new JEMALLOC_N(ckh_new)
+#define ckh_pointer_hash JEMALLOC_N(ckh_pointer_hash)
+#define ckh_pointer_keycomp JEMALLOC_N(ckh_pointer_keycomp)
+#define ckh_remove JEMALLOC_N(ckh_remove)
+#define ckh_search JEMALLOC_N(ckh_search)
+#define ckh_string_hash JEMALLOC_N(ckh_string_hash)
+#define ckh_string_keycomp JEMALLOC_N(ckh_string_keycomp)
+#define ctl_boot JEMALLOC_N(ctl_boot)
+#define ctl_bymib JEMALLOC_N(ctl_bymib)
+#define ctl_byname JEMALLOC_N(ctl_byname)
+#define ctl_nametomib JEMALLOC_N(ctl_nametomib)
+#define ctl_postfork_child JEMALLOC_N(ctl_postfork_child)
+#define ctl_postfork_parent JEMALLOC_N(ctl_postfork_parent)
+#define ctl_prefork JEMALLOC_N(ctl_prefork)
+#define div_init JEMALLOC_N(div_init)
+#define extent_alloc JEMALLOC_N(extent_alloc)
+#define extent_alloc_wrapper JEMALLOC_N(extent_alloc_wrapper)
+#define extent_avail_any JEMALLOC_N(extent_avail_any)
+#define extent_avail_empty JEMALLOC_N(extent_avail_empty)
+#define extent_avail_first JEMALLOC_N(extent_avail_first)
+#define extent_avail_insert JEMALLOC_N(extent_avail_insert)
+#define extent_avail_new JEMALLOC_N(extent_avail_new)
+#define extent_avail_remove JEMALLOC_N(extent_avail_remove)
+#define extent_avail_remove_any JEMALLOC_N(extent_avail_remove_any)
+#define extent_avail_remove_first JEMALLOC_N(extent_avail_remove_first)
+#define extent_boot JEMALLOC_N(extent_boot)
+#define extent_commit_wrapper JEMALLOC_N(extent_commit_wrapper)
+#define extent_dalloc JEMALLOC_N(extent_dalloc)
+#define extent_dalloc_gap JEMALLOC_N(extent_dalloc_gap)
+#define extent_dalloc_wrapper JEMALLOC_N(extent_dalloc_wrapper)
+#define extent_decommit_wrapper JEMALLOC_N(extent_decommit_wrapper)
+#define extent_destroy_wrapper JEMALLOC_N(extent_destroy_wrapper)
+#define extent_heap_any JEMALLOC_N(extent_heap_any)
+#define extent_heap_empty JEMALLOC_N(extent_heap_empty)
+#define extent_heap_first JEMALLOC_N(extent_heap_first)
+#define extent_heap_insert JEMALLOC_N(extent_heap_insert)
+#define extent_heap_new JEMALLOC_N(extent_heap_new)
+#define extent_heap_remove JEMALLOC_N(extent_heap_remove)
+#define extent_heap_remove_any JEMALLOC_N(extent_heap_remove_any)
+#define extent_heap_remove_first JEMALLOC_N(extent_heap_remove_first)
+#define extent_hooks_default JEMALLOC_N(extent_hooks_default)
+#define extent_hooks_get JEMALLOC_N(extent_hooks_get)
+#define extent_hooks_set JEMALLOC_N(extent_hooks_set)
+#define extent_merge_wrapper JEMALLOC_N(extent_merge_wrapper)
+#define extent_mutex_pool JEMALLOC_N(extent_mutex_pool)
+#define extent_purge_forced_wrapper JEMALLOC_N(extent_purge_forced_wrapper)
+#define extent_purge_lazy_wrapper JEMALLOC_N(extent_purge_lazy_wrapper)
+#define extents_alloc JEMALLOC_N(extents_alloc)
+#define extents_dalloc JEMALLOC_N(extents_dalloc)
+#define extents_evict JEMALLOC_N(extents_evict)
+#define extents_init JEMALLOC_N(extents_init)
+#define extents_npages_get JEMALLOC_N(extents_npages_get)
+#define extent_split_wrapper JEMALLOC_N(extent_split_wrapper)
+#define extents_postfork_child JEMALLOC_N(extents_postfork_child)
+#define extents_postfork_parent JEMALLOC_N(extents_postfork_parent)
+#define extents_prefork JEMALLOC_N(extents_prefork)
+#define extents_rtree JEMALLOC_N(extents_rtree)
+#define extents_state_get JEMALLOC_N(extents_state_get)
+#define opt_lg_extent_max_active_fit JEMALLOC_N(opt_lg_extent_max_active_fit)
+#define dss_prec_names JEMALLOC_N(dss_prec_names)
+#define extent_alloc_dss JEMALLOC_N(extent_alloc_dss)
+#define extent_dss_boot JEMALLOC_N(extent_dss_boot)
+#define extent_dss_mergeable JEMALLOC_N(extent_dss_mergeable)
+#define extent_dss_prec_get JEMALLOC_N(extent_dss_prec_get)
+#define extent_dss_prec_set JEMALLOC_N(extent_dss_prec_set)
+#define extent_in_dss JEMALLOC_N(extent_in_dss)
+#define opt_dss JEMALLOC_N(opt_dss)
+#define extent_alloc_mmap JEMALLOC_N(extent_alloc_mmap)
+#define extent_dalloc_mmap JEMALLOC_N(extent_dalloc_mmap)
+#define opt_retain JEMALLOC_N(opt_retain)
+#define hooks_arena_new_hook JEMALLOC_N(hooks_arena_new_hook)
+#define hooks_libc_hook JEMALLOC_N(hooks_libc_hook)
+#define large_dalloc JEMALLOC_N(large_dalloc)
+#define large_dalloc_finish JEMALLOC_N(large_dalloc_finish)
+#define large_dalloc_junk JEMALLOC_N(large_dalloc_junk)
+#define large_dalloc_maybe_junk JEMALLOC_N(large_dalloc_maybe_junk)
+#define large_dalloc_prep_junked_locked JEMALLOC_N(large_dalloc_prep_junked_locked)
+#define large_malloc JEMALLOC_N(large_malloc)
+#define large_palloc JEMALLOC_N(large_palloc)
+#define large_prof_tctx_get JEMALLOC_N(large_prof_tctx_get)
+#define large_prof_tctx_reset JEMALLOC_N(large_prof_tctx_reset)
+#define large_prof_tctx_set JEMALLOC_N(large_prof_tctx_set)
+#define large_ralloc JEMALLOC_N(large_ralloc)
+#define large_ralloc_no_move JEMALLOC_N(large_ralloc_no_move)
+#define large_salloc JEMALLOC_N(large_salloc)
+#define log_init_done JEMALLOC_N(log_init_done)
+#define log_var_names JEMALLOC_N(log_var_names)
+#define log_var_update_state JEMALLOC_N(log_var_update_state)
+#define buferror JEMALLOC_N(buferror)
+#define malloc_cprintf JEMALLOC_N(malloc_cprintf)
+#define malloc_printf JEMALLOC_N(malloc_printf)
+#define malloc_snprintf JEMALLOC_N(malloc_snprintf)
+#define malloc_strtoumax JEMALLOC_N(malloc_strtoumax)
+#define malloc_vcprintf JEMALLOC_N(malloc_vcprintf)
+#define malloc_vsnprintf JEMALLOC_N(malloc_vsnprintf)
+#define malloc_write JEMALLOC_N(malloc_write)
+#define malloc_mutex_boot JEMALLOC_N(malloc_mutex_boot)
+#define malloc_mutex_init JEMALLOC_N(malloc_mutex_init)
+#define malloc_mutex_lock_slow JEMALLOC_N(malloc_mutex_lock_slow)
+#define malloc_mutex_postfork_child JEMALLOC_N(malloc_mutex_postfork_child)
+#define malloc_mutex_postfork_parent JEMALLOC_N(malloc_mutex_postfork_parent)
+#define malloc_mutex_prefork JEMALLOC_N(malloc_mutex_prefork)
+#define malloc_mutex_prof_data_reset JEMALLOC_N(malloc_mutex_prof_data_reset)
+#define mutex_pool_init JEMALLOC_N(mutex_pool_init)
+#define nstime_add JEMALLOC_N(nstime_add)
+#define nstime_compare JEMALLOC_N(nstime_compare)
+#define nstime_copy JEMALLOC_N(nstime_copy)
+#define nstime_divide JEMALLOC_N(nstime_divide)
+#define nstime_iadd JEMALLOC_N(nstime_iadd)
+#define nstime_idivide JEMALLOC_N(nstime_idivide)
+#define nstime_imultiply JEMALLOC_N(nstime_imultiply)
+#define nstime_init JEMALLOC_N(nstime_init)
+#define nstime_init2 JEMALLOC_N(nstime_init2)
+#define nstime_isubtract JEMALLOC_N(nstime_isubtract)
+#define nstime_monotonic JEMALLOC_N(nstime_monotonic)
+#define nstime_msec JEMALLOC_N(nstime_msec)
+#define nstime_ns JEMALLOC_N(nstime_ns)
+#define nstime_nsec JEMALLOC_N(nstime_nsec)
+#define nstime_sec JEMALLOC_N(nstime_sec)
+#define nstime_subtract JEMALLOC_N(nstime_subtract)
+#define nstime_update JEMALLOC_N(nstime_update)
+#define init_system_thp_mode JEMALLOC_N(init_system_thp_mode)
+#define opt_thp JEMALLOC_N(opt_thp)
+#define pages_boot JEMALLOC_N(pages_boot)
+#define pages_commit JEMALLOC_N(pages_commit)
+#define pages_decommit JEMALLOC_N(pages_decommit)
+#define pages_dodump JEMALLOC_N(pages_dodump)
+#define pages_dontdump JEMALLOC_N(pages_dontdump)
+#define pages_huge JEMALLOC_N(pages_huge)
+#define pages_map JEMALLOC_N(pages_map)
+#define pages_nohuge JEMALLOC_N(pages_nohuge)
+#define pages_purge_forced JEMALLOC_N(pages_purge_forced)
+#define pages_purge_lazy JEMALLOC_N(pages_purge_lazy)
+#define pages_set_thp_state JEMALLOC_N(pages_set_thp_state)
+#define pages_unmap JEMALLOC_N(pages_unmap)
+#define thp_mode_names JEMALLOC_N(thp_mode_names)
+#define bt2gctx_mtx JEMALLOC_N(bt2gctx_mtx)
+#define bt_init JEMALLOC_N(bt_init)
+#define lg_prof_sample JEMALLOC_N(lg_prof_sample)
+#define opt_lg_prof_interval JEMALLOC_N(opt_lg_prof_interval)
+#define opt_lg_prof_sample JEMALLOC_N(opt_lg_prof_sample)
+#define opt_prof JEMALLOC_N(opt_prof)
+#define opt_prof_accum JEMALLOC_N(opt_prof_accum)
+#define opt_prof_active JEMALLOC_N(opt_prof_active)
+#define opt_prof_final JEMALLOC_N(opt_prof_final)
+#define opt_prof_gdump JEMALLOC_N(opt_prof_gdump)
+#define opt_prof_leak JEMALLOC_N(opt_prof_leak)
+#define opt_prof_prefix JEMALLOC_N(opt_prof_prefix)
+#define opt_prof_thread_active_init JEMALLOC_N(opt_prof_thread_active_init)
+#define prof_accum_init JEMALLOC_N(prof_accum_init)
+#define prof_active JEMALLOC_N(prof_active)
+#define prof_active_get JEMALLOC_N(prof_active_get)
+#define prof_active_set JEMALLOC_N(prof_active_set)
+#define prof_alloc_rollback JEMALLOC_N(prof_alloc_rollback)
+#define prof_backtrace JEMALLOC_N(prof_backtrace)
+#define prof_boot0 JEMALLOC_N(prof_boot0)
+#define prof_boot1 JEMALLOC_N(prof_boot1)
+#define prof_boot2 JEMALLOC_N(prof_boot2)
+#define prof_dump_header JEMALLOC_N(prof_dump_header)
+#define prof_dump_open JEMALLOC_N(prof_dump_open)
+#define prof_free_sampled_object JEMALLOC_N(prof_free_sampled_object)
+#define prof_gdump JEMALLOC_N(prof_gdump)
+#define prof_gdump_get JEMALLOC_N(prof_gdump_get)
+#define prof_gdump_set JEMALLOC_N(prof_gdump_set)
+#define prof_gdump_val JEMALLOC_N(prof_gdump_val)
+#define prof_idump JEMALLOC_N(prof_idump)
+#define prof_interval JEMALLOC_N(prof_interval)
+#define prof_lookup JEMALLOC_N(prof_lookup)
+#define prof_malloc_sample_object JEMALLOC_N(prof_malloc_sample_object)
+#define prof_mdump JEMALLOC_N(prof_mdump)
+#define prof_postfork_child JEMALLOC_N(prof_postfork_child)
+#define prof_postfork_parent JEMALLOC_N(prof_postfork_parent)
+#define prof_prefork0 JEMALLOC_N(prof_prefork0)
+#define prof_prefork1 JEMALLOC_N(prof_prefork1)
+#define prof_reset JEMALLOC_N(prof_reset)
+#define prof_sample_threshold_update JEMALLOC_N(prof_sample_threshold_update)
+#define prof_tdata_cleanup JEMALLOC_N(prof_tdata_cleanup)
+#define prof_tdata_init JEMALLOC_N(prof_tdata_init)
+#define prof_tdata_reinit JEMALLOC_N(prof_tdata_reinit)
+#define prof_thread_active_get JEMALLOC_N(prof_thread_active_get)
+#define prof_thread_active_init_get JEMALLOC_N(prof_thread_active_init_get)
+#define prof_thread_active_init_set JEMALLOC_N(prof_thread_active_init_set)
+#define prof_thread_active_set JEMALLOC_N(prof_thread_active_set)
+#define prof_thread_name_get JEMALLOC_N(prof_thread_name_get)
+#define prof_thread_name_set JEMALLOC_N(prof_thread_name_set)
+#define rtree_ctx_data_init JEMALLOC_N(rtree_ctx_data_init)
+#define rtree_leaf_alloc JEMALLOC_N(rtree_leaf_alloc)
+#define rtree_leaf_dalloc JEMALLOC_N(rtree_leaf_dalloc)
+#define rtree_leaf_elm_lookup_hard JEMALLOC_N(rtree_leaf_elm_lookup_hard)
+#define rtree_new JEMALLOC_N(rtree_new)
+#define rtree_node_alloc JEMALLOC_N(rtree_node_alloc)
+#define rtree_node_dalloc JEMALLOC_N(rtree_node_dalloc)
+#define arena_mutex_names JEMALLOC_N(arena_mutex_names)
+#define global_mutex_names JEMALLOC_N(global_mutex_names)
+#define opt_stats_print JEMALLOC_N(opt_stats_print)
+#define opt_stats_print_opts JEMALLOC_N(opt_stats_print_opts)
+#define stats_print JEMALLOC_N(stats_print)
+#define sz_index2size_tab JEMALLOC_N(sz_index2size_tab)
+#define sz_pind2sz_tab JEMALLOC_N(sz_pind2sz_tab)
+#define sz_size2index_tab JEMALLOC_N(sz_size2index_tab)
+#define nhbins JEMALLOC_N(nhbins)
+#define opt_lg_tcache_max JEMALLOC_N(opt_lg_tcache_max)
+#define opt_tcache JEMALLOC_N(opt_tcache)
+#define tcache_alloc_small_hard JEMALLOC_N(tcache_alloc_small_hard)
+#define tcache_arena_associate JEMALLOC_N(tcache_arena_associate)
+#define tcache_arena_reassociate JEMALLOC_N(tcache_arena_reassociate)
+#define tcache_bin_flush_large JEMALLOC_N(tcache_bin_flush_large)
+#define tcache_bin_flush_small JEMALLOC_N(tcache_bin_flush_small)
+#define tcache_bin_info JEMALLOC_N(tcache_bin_info)
+#define tcache_boot JEMALLOC_N(tcache_boot)
+#define tcache_cleanup JEMALLOC_N(tcache_cleanup)
+#define tcache_create_explicit JEMALLOC_N(tcache_create_explicit)
+#define tcache_event_hard JEMALLOC_N(tcache_event_hard)
+#define tcache_flush JEMALLOC_N(tcache_flush)
+#define tcache_maxclass JEMALLOC_N(tcache_maxclass)
+#define tcache_postfork_child JEMALLOC_N(tcache_postfork_child)
+#define tcache_postfork_parent JEMALLOC_N(tcache_postfork_parent)
+#define tcache_prefork JEMALLOC_N(tcache_prefork)
+#define tcaches JEMALLOC_N(tcaches)
+#define tcache_salloc JEMALLOC_N(tcache_salloc)
+#define tcaches_create JEMALLOC_N(tcaches_create)
+#define tcaches_destroy JEMALLOC_N(tcaches_destroy)
+#define tcaches_flush JEMALLOC_N(tcaches_flush)
+#define tcache_stats_merge JEMALLOC_N(tcache_stats_merge)
+#define tsd_tcache_data_init JEMALLOC_N(tsd_tcache_data_init)
+#define tsd_tcache_enabled_data_init JEMALLOC_N(tsd_tcache_enabled_data_init)
+#define malloc_tsd_boot0 JEMALLOC_N(malloc_tsd_boot0)
+#define malloc_tsd_boot1 JEMALLOC_N(malloc_tsd_boot1)
+#define malloc_tsd_cleanup_register JEMALLOC_N(malloc_tsd_cleanup_register)
+#define malloc_tsd_dalloc JEMALLOC_N(malloc_tsd_dalloc)
+#define malloc_tsd_malloc JEMALLOC_N(malloc_tsd_malloc)
+#define tsd_boot_wrapper JEMALLOC_N(tsd_boot_wrapper)
+#define tsd_booted JEMALLOC_N(tsd_booted)
+#define tsd_cleanup JEMALLOC_N(tsd_cleanup)
+#define tsd_fetch_slow JEMALLOC_N(tsd_fetch_slow)
+#define tsd_init_check_recursion JEMALLOC_N(tsd_init_check_recursion)
+#define tsd_init_finish JEMALLOC_N(tsd_init_finish)
+#define tsd_init_head JEMALLOC_N(tsd_init_head)
+#define tsd_slow_update JEMALLOC_N(tsd_slow_update)
+#define tsd_tls JEMALLOC_N(tsd_tls)
+#define tsd_tsd JEMALLOC_N(tsd_tsd)
+#define witness_depth_error JEMALLOC_N(witness_depth_error)
+#define witnesses_cleanup JEMALLOC_N(witnesses_cleanup)
+#define witness_init JEMALLOC_N(witness_init)
+#define witness_lock_error JEMALLOC_N(witness_lock_error)
+#define witness_not_owner_error JEMALLOC_N(witness_not_owner_error)
+#define witness_owner_error JEMALLOC_N(witness_owner_error)
+#define witness_postfork_child JEMALLOC_N(witness_postfork_child)
+#define witness_postfork_parent JEMALLOC_N(witness_postfork_parent)
+#define witness_prefork JEMALLOC_N(witness_prefork)
diff --git a/include/jemalloc/internal/private_namespace_jet.h b/include/jemalloc/internal/private_namespace_jet.h
new file mode 100644
index 00000000..c745f6ea
--- /dev/null
+++ b/include/jemalloc/internal/private_namespace_jet.h
@@ -0,0 +1,389 @@
+#define a0dalloc JEMALLOC_N(a0dalloc)
+#define a0malloc JEMALLOC_N(a0malloc)
+#define arena_choose_hard JEMALLOC_N(arena_choose_hard)
+#define arena_cleanup JEMALLOC_N(arena_cleanup)
+#define arena_init JEMALLOC_N(arena_init)
+#define arena_migrate JEMALLOC_N(arena_migrate)
+#define arenas JEMALLOC_N(arenas)
+#define arena_set JEMALLOC_N(arena_set)
+#define arenas_lock JEMALLOC_N(arenas_lock)
+#define arenas_tdata_cleanup JEMALLOC_N(arenas_tdata_cleanup)
+#define arena_tdata_get_hard JEMALLOC_N(arena_tdata_get_hard)
+#define bootstrap_calloc JEMALLOC_N(bootstrap_calloc)
+#define bootstrap_free JEMALLOC_N(bootstrap_free)
+#define bootstrap_malloc JEMALLOC_N(bootstrap_malloc)
+#define iarena_cleanup JEMALLOC_N(iarena_cleanup)
+#define jemalloc_postfork_child JEMALLOC_N(jemalloc_postfork_child)
+#define jemalloc_postfork_parent JEMALLOC_N(jemalloc_postfork_parent)
+#define jemalloc_prefork JEMALLOC_N(jemalloc_prefork)
+#define malloc_initialized JEMALLOC_N(malloc_initialized)
+#define malloc_slow JEMALLOC_N(malloc_slow)
+#define narenas_auto JEMALLOC_N(narenas_auto)
+#define narenas_total_get JEMALLOC_N(narenas_total_get)
+#define ncpus JEMALLOC_N(ncpus)
+#define opt_abort JEMALLOC_N(opt_abort)
+#define opt_abort_conf JEMALLOC_N(opt_abort_conf)
+#define opt_junk JEMALLOC_N(opt_junk)
+#define opt_junk_alloc JEMALLOC_N(opt_junk_alloc)
+#define opt_junk_free JEMALLOC_N(opt_junk_free)
+#define opt_narenas JEMALLOC_N(opt_narenas)
+#define opt_utrace JEMALLOC_N(opt_utrace)
+#define opt_xmalloc JEMALLOC_N(opt_xmalloc)
+#define opt_zero JEMALLOC_N(opt_zero)
+#define arena_alloc_junk_small JEMALLOC_N(arena_alloc_junk_small)
+#define arena_basic_stats_merge JEMALLOC_N(arena_basic_stats_merge)
+#define arena_boot JEMALLOC_N(arena_boot)
+#define arena_dalloc_bin_junked_locked JEMALLOC_N(arena_dalloc_bin_junked_locked)
+#define arena_dalloc_junk_small JEMALLOC_N(arena_dalloc_junk_small)
+#define arena_dalloc_promoted JEMALLOC_N(arena_dalloc_promoted)
+#define arena_dalloc_small JEMALLOC_N(arena_dalloc_small)
+#define arena_decay JEMALLOC_N(arena_decay)
+#define arena_destroy JEMALLOC_N(arena_destroy)
+#define arena_dirty_decay_ms_default_get JEMALLOC_N(arena_dirty_decay_ms_default_get)
+#define arena_dirty_decay_ms_default_set JEMALLOC_N(arena_dirty_decay_ms_default_set)
+#define arena_dirty_decay_ms_get JEMALLOC_N(arena_dirty_decay_ms_get)
+#define arena_dirty_decay_ms_set JEMALLOC_N(arena_dirty_decay_ms_set)
+#define arena_dss_prec_get JEMALLOC_N(arena_dss_prec_get)
+#define arena_dss_prec_set JEMALLOC_N(arena_dss_prec_set)
+#define arena_extent_alloc_large JEMALLOC_N(arena_extent_alloc_large)
+#define arena_extent_dalloc_large_prep JEMALLOC_N(arena_extent_dalloc_large_prep)
+#define arena_extent_ralloc_large_expand JEMALLOC_N(arena_extent_ralloc_large_expand)
+#define arena_extent_ralloc_large_shrink JEMALLOC_N(arena_extent_ralloc_large_shrink)
+#define arena_extents_dirty_dalloc JEMALLOC_N(arena_extents_dirty_dalloc)
+#define arena_extent_sn_next JEMALLOC_N(arena_extent_sn_next)
+#define arena_malloc_hard JEMALLOC_N(arena_malloc_hard)
+#define arena_muzzy_decay_ms_default_get JEMALLOC_N(arena_muzzy_decay_ms_default_get)
+#define arena_muzzy_decay_ms_default_set JEMALLOC_N(arena_muzzy_decay_ms_default_set)
+#define arena_muzzy_decay_ms_get JEMALLOC_N(arena_muzzy_decay_ms_get)
+#define arena_muzzy_decay_ms_set JEMALLOC_N(arena_muzzy_decay_ms_set)
+#define arena_new JEMALLOC_N(arena_new)
+#define arena_nthreads_dec JEMALLOC_N(arena_nthreads_dec)
+#define arena_nthreads_get JEMALLOC_N(arena_nthreads_get)
+#define arena_nthreads_inc JEMALLOC_N(arena_nthreads_inc)
+#define arena_palloc JEMALLOC_N(arena_palloc)
+#define arena_postfork_child JEMALLOC_N(arena_postfork_child)
+#define arena_postfork_parent JEMALLOC_N(arena_postfork_parent)
+#define arena_prefork0 JEMALLOC_N(arena_prefork0)
+#define arena_prefork1 JEMALLOC_N(arena_prefork1)
+#define arena_prefork2 JEMALLOC_N(arena_prefork2)
+#define arena_prefork3 JEMALLOC_N(arena_prefork3)
+#define arena_prefork4 JEMALLOC_N(arena_prefork4)
+#define arena_prefork5 JEMALLOC_N(arena_prefork5)
+#define arena_prefork6 JEMALLOC_N(arena_prefork6)
+#define arena_prefork7 JEMALLOC_N(arena_prefork7)
+#define arena_prof_promote JEMALLOC_N(arena_prof_promote)
+#define arena_ralloc JEMALLOC_N(arena_ralloc)
+#define arena_ralloc_no_move JEMALLOC_N(arena_ralloc_no_move)
+#define arena_reset JEMALLOC_N(arena_reset)
+#define arena_retain_grow_limit_get_set JEMALLOC_N(arena_retain_grow_limit_get_set)
+#define arena_slab_regind JEMALLOC_N(arena_slab_regind)
+#define arena_stats_merge JEMALLOC_N(arena_stats_merge)
+#define arena_tcache_fill_small JEMALLOC_N(arena_tcache_fill_small)
+#define h_steps JEMALLOC_N(h_steps)
+#define opt_dirty_decay_ms JEMALLOC_N(opt_dirty_decay_ms)
+#define opt_muzzy_decay_ms JEMALLOC_N(opt_muzzy_decay_ms)
+#define opt_percpu_arena JEMALLOC_N(opt_percpu_arena)
+#define percpu_arena_mode_names JEMALLOC_N(percpu_arena_mode_names)
+#define background_thread_boot0 JEMALLOC_N(background_thread_boot0)
+#define background_thread_boot1 JEMALLOC_N(background_thread_boot1)
+#define background_thread_create JEMALLOC_N(background_thread_create)
+#define background_thread_ctl_init JEMALLOC_N(background_thread_ctl_init)
+#define background_thread_enabled_state JEMALLOC_N(background_thread_enabled_state)
+#define background_thread_info JEMALLOC_N(background_thread_info)
+#define background_thread_interval_check JEMALLOC_N(background_thread_interval_check)
+#define background_thread_lock JEMALLOC_N(background_thread_lock)
+#define background_thread_postfork_child JEMALLOC_N(background_thread_postfork_child)
+#define background_thread_postfork_parent JEMALLOC_N(background_thread_postfork_parent)
+#define background_thread_prefork0 JEMALLOC_N(background_thread_prefork0)
+#define background_thread_prefork1 JEMALLOC_N(background_thread_prefork1)
+#define background_threads_disable JEMALLOC_N(background_threads_disable)
+#define background_threads_enable JEMALLOC_N(background_threads_enable)
+#define background_thread_stats_read JEMALLOC_N(background_thread_stats_read)
+#define can_enable_background_thread JEMALLOC_N(can_enable_background_thread)
+#define max_background_threads JEMALLOC_N(max_background_threads)
+#define n_background_threads JEMALLOC_N(n_background_threads)
+#define opt_background_thread JEMALLOC_N(opt_background_thread)
+#define opt_max_background_threads JEMALLOC_N(opt_max_background_threads)
+#define pthread_create_wrapper JEMALLOC_N(pthread_create_wrapper)
+#define b0get JEMALLOC_N(b0get)
+#define base_alloc JEMALLOC_N(base_alloc)
+#define base_alloc_extent JEMALLOC_N(base_alloc_extent)
+#define base_boot JEMALLOC_N(base_boot)
+#define base_delete JEMALLOC_N(base_delete)
+#define base_extent_hooks_get JEMALLOC_N(base_extent_hooks_get)
+#define base_extent_hooks_set JEMALLOC_N(base_extent_hooks_set)
+#define base_new JEMALLOC_N(base_new)
+#define base_postfork_child JEMALLOC_N(base_postfork_child)
+#define base_postfork_parent JEMALLOC_N(base_postfork_parent)
+#define base_prefork JEMALLOC_N(base_prefork)
+#define base_stats_get JEMALLOC_N(base_stats_get)
+#define metadata_thp_mode_names JEMALLOC_N(metadata_thp_mode_names)
+#define opt_metadata_thp JEMALLOC_N(opt_metadata_thp)
+#define bin_infos JEMALLOC_N(bin_infos)
+#define bin_init JEMALLOC_N(bin_init)
+#define bin_postfork_child JEMALLOC_N(bin_postfork_child)
+#define bin_postfork_parent JEMALLOC_N(bin_postfork_parent)
+#define bin_prefork JEMALLOC_N(bin_prefork)
+#define bitmap_info_init JEMALLOC_N(bitmap_info_init)
+#define bitmap_init JEMALLOC_N(bitmap_init)
+#define bitmap_size JEMALLOC_N(bitmap_size)
+#define ckh_count JEMALLOC_N(ckh_count)
+#define ckh_delete JEMALLOC_N(ckh_delete)
+#define ckh_insert JEMALLOC_N(ckh_insert)
+#define ckh_iter JEMALLOC_N(ckh_iter)
+#define ckh_new JEMALLOC_N(ckh_new)
+#define ckh_pointer_hash JEMALLOC_N(ckh_pointer_hash)
+#define ckh_pointer_keycomp JEMALLOC_N(ckh_pointer_keycomp)
+#define ckh_remove JEMALLOC_N(ckh_remove)
+#define ckh_search JEMALLOC_N(ckh_search)
+#define ckh_string_hash JEMALLOC_N(ckh_string_hash)
+#define ckh_string_keycomp JEMALLOC_N(ckh_string_keycomp)
+#define ctl_boot JEMALLOC_N(ctl_boot)
+#define ctl_bymib JEMALLOC_N(ctl_bymib)
+#define ctl_byname JEMALLOC_N(ctl_byname)
+#define ctl_nametomib JEMALLOC_N(ctl_nametomib)
+#define ctl_postfork_child JEMALLOC_N(ctl_postfork_child)
+#define ctl_postfork_parent JEMALLOC_N(ctl_postfork_parent)
+#define ctl_prefork JEMALLOC_N(ctl_prefork)
+#define div_init JEMALLOC_N(div_init)
+#define extent_alloc JEMALLOC_N(extent_alloc)
+#define extent_alloc_wrapper JEMALLOC_N(extent_alloc_wrapper)
+#define extent_avail_any JEMALLOC_N(extent_avail_any)
+#define extent_avail_empty JEMALLOC_N(extent_avail_empty)
+#define extent_avail_first JEMALLOC_N(extent_avail_first)
+#define extent_avail_insert JEMALLOC_N(extent_avail_insert)
+#define extent_avail_new JEMALLOC_N(extent_avail_new)
+#define extent_avail_remove JEMALLOC_N(extent_avail_remove)
+#define extent_avail_remove_any JEMALLOC_N(extent_avail_remove_any)
+#define extent_avail_remove_first JEMALLOC_N(extent_avail_remove_first)
+#define extent_boot JEMALLOC_N(extent_boot)
+#define extent_commit_wrapper JEMALLOC_N(extent_commit_wrapper)
+#define extent_dalloc JEMALLOC_N(extent_dalloc)
+#define extent_dalloc_gap JEMALLOC_N(extent_dalloc_gap)
+#define extent_dalloc_wrapper JEMALLOC_N(extent_dalloc_wrapper)
+#define extent_decommit_wrapper JEMALLOC_N(extent_decommit_wrapper)
+#define extent_destroy_wrapper JEMALLOC_N(extent_destroy_wrapper)
+#define extent_heap_any JEMALLOC_N(extent_heap_any)
+#define extent_heap_empty JEMALLOC_N(extent_heap_empty)
+#define extent_heap_first JEMALLOC_N(extent_heap_first)
+#define extent_heap_insert JEMALLOC_N(extent_heap_insert)
+#define extent_heap_new JEMALLOC_N(extent_heap_new)
+#define extent_heap_remove JEMALLOC_N(extent_heap_remove)
+#define extent_heap_remove_any JEMALLOC_N(extent_heap_remove_any)
+#define extent_heap_remove_first JEMALLOC_N(extent_heap_remove_first)
+#define extent_hooks_default JEMALLOC_N(extent_hooks_default)
+#define extent_hooks_get JEMALLOC_N(extent_hooks_get)
+#define extent_hooks_set JEMALLOC_N(extent_hooks_set)
+#define extent_merge_wrapper JEMALLOC_N(extent_merge_wrapper)
+#define extent_mutex_pool JEMALLOC_N(extent_mutex_pool)
+#define extent_purge_forced_wrapper JEMALLOC_N(extent_purge_forced_wrapper)
+#define extent_purge_lazy_wrapper JEMALLOC_N(extent_purge_lazy_wrapper)
+#define extents_alloc JEMALLOC_N(extents_alloc)
+#define extents_dalloc JEMALLOC_N(extents_dalloc)
+#define extents_evict JEMALLOC_N(extents_evict)
+#define extents_init JEMALLOC_N(extents_init)
+#define extent_size_quantize_ceil JEMALLOC_N(extent_size_quantize_ceil)
+#define extent_size_quantize_floor JEMALLOC_N(extent_size_quantize_floor)
+#define extents_npages_get JEMALLOC_N(extents_npages_get)
+#define extent_split_wrapper JEMALLOC_N(extent_split_wrapper)
+#define extents_postfork_child JEMALLOC_N(extents_postfork_child)
+#define extents_postfork_parent JEMALLOC_N(extents_postfork_parent)
+#define extents_prefork JEMALLOC_N(extents_prefork)
+#define extents_rtree JEMALLOC_N(extents_rtree)
+#define extents_state_get JEMALLOC_N(extents_state_get)
+#define opt_lg_extent_max_active_fit JEMALLOC_N(opt_lg_extent_max_active_fit)
+#define dss_prec_names JEMALLOC_N(dss_prec_names)
+#define extent_alloc_dss JEMALLOC_N(extent_alloc_dss)
+#define extent_dss_boot JEMALLOC_N(extent_dss_boot)
+#define extent_dss_mergeable JEMALLOC_N(extent_dss_mergeable)
+#define extent_dss_prec_get JEMALLOC_N(extent_dss_prec_get)
+#define extent_dss_prec_set JEMALLOC_N(extent_dss_prec_set)
+#define extent_in_dss JEMALLOC_N(extent_in_dss)
+#define opt_dss JEMALLOC_N(opt_dss)
+#define extent_alloc_mmap JEMALLOC_N(extent_alloc_mmap)
+#define extent_dalloc_mmap JEMALLOC_N(extent_dalloc_mmap)
+#define opt_retain JEMALLOC_N(opt_retain)
+#define hooks_arena_new_hook JEMALLOC_N(hooks_arena_new_hook)
+#define hooks_libc_hook JEMALLOC_N(hooks_libc_hook)
+#define large_dalloc JEMALLOC_N(large_dalloc)
+#define large_dalloc_finish JEMALLOC_N(large_dalloc_finish)
+#define large_dalloc_junk JEMALLOC_N(large_dalloc_junk)
+#define large_dalloc_maybe_junk JEMALLOC_N(large_dalloc_maybe_junk)
+#define large_dalloc_prep_junked_locked JEMALLOC_N(large_dalloc_prep_junked_locked)
+#define large_malloc JEMALLOC_N(large_malloc)
+#define large_palloc JEMALLOC_N(large_palloc)
+#define large_prof_tctx_get JEMALLOC_N(large_prof_tctx_get)
+#define large_prof_tctx_reset JEMALLOC_N(large_prof_tctx_reset)
+#define large_prof_tctx_set JEMALLOC_N(large_prof_tctx_set)
+#define large_ralloc JEMALLOC_N(large_ralloc)
+#define large_ralloc_no_move JEMALLOC_N(large_ralloc_no_move)
+#define large_salloc JEMALLOC_N(large_salloc)
+#define log_init_done JEMALLOC_N(log_init_done)
+#define log_var_names JEMALLOC_N(log_var_names)
+#define log_var_update_state JEMALLOC_N(log_var_update_state)
+#define buferror JEMALLOC_N(buferror)
+#define malloc_cprintf JEMALLOC_N(malloc_cprintf)
+#define malloc_printf JEMALLOC_N(malloc_printf)
+#define malloc_snprintf JEMALLOC_N(malloc_snprintf)
+#define malloc_strtoumax JEMALLOC_N(malloc_strtoumax)
+#define malloc_vcprintf JEMALLOC_N(malloc_vcprintf)
+#define malloc_vsnprintf JEMALLOC_N(malloc_vsnprintf)
+#define malloc_write JEMALLOC_N(malloc_write)
+#define malloc_mutex_boot JEMALLOC_N(malloc_mutex_boot)
+#define malloc_mutex_init JEMALLOC_N(malloc_mutex_init)
+#define malloc_mutex_lock_slow JEMALLOC_N(malloc_mutex_lock_slow)
+#define malloc_mutex_postfork_child JEMALLOC_N(malloc_mutex_postfork_child)
+#define malloc_mutex_postfork_parent JEMALLOC_N(malloc_mutex_postfork_parent)
+#define malloc_mutex_prefork JEMALLOC_N(malloc_mutex_prefork)
+#define malloc_mutex_prof_data_reset JEMALLOC_N(malloc_mutex_prof_data_reset)
+#define mutex_pool_init JEMALLOC_N(mutex_pool_init)
+#define nstime_add JEMALLOC_N(nstime_add)
+#define nstime_compare JEMALLOC_N(nstime_compare)
+#define nstime_copy JEMALLOC_N(nstime_copy)
+#define nstime_divide JEMALLOC_N(nstime_divide)
+#define nstime_iadd JEMALLOC_N(nstime_iadd)
+#define nstime_idivide JEMALLOC_N(nstime_idivide)
+#define nstime_imultiply JEMALLOC_N(nstime_imultiply)
+#define nstime_init JEMALLOC_N(nstime_init)
+#define nstime_init2 JEMALLOC_N(nstime_init2)
+#define nstime_isubtract JEMALLOC_N(nstime_isubtract)
+#define nstime_monotonic JEMALLOC_N(nstime_monotonic)
+#define nstime_msec JEMALLOC_N(nstime_msec)
+#define nstime_ns JEMALLOC_N(nstime_ns)
+#define nstime_nsec JEMALLOC_N(nstime_nsec)
+#define nstime_sec JEMALLOC_N(nstime_sec)
+#define nstime_subtract JEMALLOC_N(nstime_subtract)
+#define nstime_update JEMALLOC_N(nstime_update)
+#define init_system_thp_mode JEMALLOC_N(init_system_thp_mode)
+#define opt_thp JEMALLOC_N(opt_thp)
+#define pages_boot JEMALLOC_N(pages_boot)
+#define pages_commit JEMALLOC_N(pages_commit)
+#define pages_decommit JEMALLOC_N(pages_decommit)
+#define pages_dodump JEMALLOC_N(pages_dodump)
+#define pages_dontdump JEMALLOC_N(pages_dontdump)
+#define pages_huge JEMALLOC_N(pages_huge)
+#define pages_map JEMALLOC_N(pages_map)
+#define pages_nohuge JEMALLOC_N(pages_nohuge)
+#define pages_purge_forced JEMALLOC_N(pages_purge_forced)
+#define pages_purge_lazy JEMALLOC_N(pages_purge_lazy)
+#define pages_set_thp_state JEMALLOC_N(pages_set_thp_state)
+#define pages_unmap JEMALLOC_N(pages_unmap)
+#define thp_mode_names JEMALLOC_N(thp_mode_names)
+#define bt2gctx_mtx JEMALLOC_N(bt2gctx_mtx)
+#define bt_init JEMALLOC_N(bt_init)
+#define lg_prof_sample JEMALLOC_N(lg_prof_sample)
+#define opt_lg_prof_interval JEMALLOC_N(opt_lg_prof_interval)
+#define opt_lg_prof_sample JEMALLOC_N(opt_lg_prof_sample)
+#define opt_prof JEMALLOC_N(opt_prof)
+#define opt_prof_accum JEMALLOC_N(opt_prof_accum)
+#define opt_prof_active JEMALLOC_N(opt_prof_active)
+#define opt_prof_final JEMALLOC_N(opt_prof_final)
+#define opt_prof_gdump JEMALLOC_N(opt_prof_gdump)
+#define opt_prof_leak JEMALLOC_N(opt_prof_leak)
+#define opt_prof_prefix JEMALLOC_N(opt_prof_prefix)
+#define opt_prof_thread_active_init JEMALLOC_N(opt_prof_thread_active_init)
+#define prof_accum_init JEMALLOC_N(prof_accum_init)
+#define prof_active JEMALLOC_N(prof_active)
+#define prof_active_get JEMALLOC_N(prof_active_get)
+#define prof_active_set JEMALLOC_N(prof_active_set)
+#define prof_alloc_rollback JEMALLOC_N(prof_alloc_rollback)
+#define prof_backtrace JEMALLOC_N(prof_backtrace)
+#define prof_boot0 JEMALLOC_N(prof_boot0)
+#define prof_boot1 JEMALLOC_N(prof_boot1)
+#define prof_boot2 JEMALLOC_N(prof_boot2)
+#define prof_bt_count JEMALLOC_N(prof_bt_count)
+#define prof_cnt_all JEMALLOC_N(prof_cnt_all)
+#define prof_dump_header JEMALLOC_N(prof_dump_header)
+#define prof_dump_open JEMALLOC_N(prof_dump_open)
+#define prof_free_sampled_object JEMALLOC_N(prof_free_sampled_object)
+#define prof_gdump JEMALLOC_N(prof_gdump)
+#define prof_gdump_get JEMALLOC_N(prof_gdump_get)
+#define prof_gdump_set JEMALLOC_N(prof_gdump_set)
+#define prof_gdump_val JEMALLOC_N(prof_gdump_val)
+#define prof_idump JEMALLOC_N(prof_idump)
+#define prof_interval JEMALLOC_N(prof_interval)
+#define prof_lookup JEMALLOC_N(prof_lookup)
+#define prof_malloc_sample_object JEMALLOC_N(prof_malloc_sample_object)
+#define prof_mdump JEMALLOC_N(prof_mdump)
+#define prof_postfork_child JEMALLOC_N(prof_postfork_child)
+#define prof_postfork_parent JEMALLOC_N(prof_postfork_parent)
+#define prof_prefork0 JEMALLOC_N(prof_prefork0)
+#define prof_prefork1 JEMALLOC_N(prof_prefork1)
+#define prof_reset JEMALLOC_N(prof_reset)
+#define prof_sample_threshold_update JEMALLOC_N(prof_sample_threshold_update)
+#define prof_tdata_cleanup JEMALLOC_N(prof_tdata_cleanup)
+#define prof_tdata_count JEMALLOC_N(prof_tdata_count)
+#define prof_tdata_init JEMALLOC_N(prof_tdata_init)
+#define prof_tdata_reinit JEMALLOC_N(prof_tdata_reinit)
+#define prof_thread_active_get JEMALLOC_N(prof_thread_active_get)
+#define prof_thread_active_init_get JEMALLOC_N(prof_thread_active_init_get)
+#define prof_thread_active_init_set JEMALLOC_N(prof_thread_active_init_set)
+#define prof_thread_active_set JEMALLOC_N(prof_thread_active_set)
+#define prof_thread_name_get JEMALLOC_N(prof_thread_name_get)
+#define prof_thread_name_set JEMALLOC_N(prof_thread_name_set)
+#define rtree_ctx_data_init JEMALLOC_N(rtree_ctx_data_init)
+#define rtree_delete JEMALLOC_N(rtree_delete)
+#define rtree_leaf_alloc JEMALLOC_N(rtree_leaf_alloc)
+#define rtree_leaf_dalloc JEMALLOC_N(rtree_leaf_dalloc)
+#define rtree_leaf_elm_lookup_hard JEMALLOC_N(rtree_leaf_elm_lookup_hard)
+#define rtree_new JEMALLOC_N(rtree_new)
+#define rtree_node_alloc JEMALLOC_N(rtree_node_alloc)
+#define rtree_node_dalloc JEMALLOC_N(rtree_node_dalloc)
+#define arena_mutex_names JEMALLOC_N(arena_mutex_names)
+#define global_mutex_names JEMALLOC_N(global_mutex_names)
+#define opt_stats_print JEMALLOC_N(opt_stats_print)
+#define opt_stats_print_opts JEMALLOC_N(opt_stats_print_opts)
+#define stats_print JEMALLOC_N(stats_print)
+#define sz_index2size_tab JEMALLOC_N(sz_index2size_tab)
+#define sz_pind2sz_tab JEMALLOC_N(sz_pind2sz_tab)
+#define sz_size2index_tab JEMALLOC_N(sz_size2index_tab)
+#define nhbins JEMALLOC_N(nhbins)
+#define opt_lg_tcache_max JEMALLOC_N(opt_lg_tcache_max)
+#define opt_tcache JEMALLOC_N(opt_tcache)
+#define tcache_alloc_small_hard JEMALLOC_N(tcache_alloc_small_hard)
+#define tcache_arena_associate JEMALLOC_N(tcache_arena_associate)
+#define tcache_arena_reassociate JEMALLOC_N(tcache_arena_reassociate)
+#define tcache_bin_flush_large JEMALLOC_N(tcache_bin_flush_large)
+#define tcache_bin_flush_small JEMALLOC_N(tcache_bin_flush_small)
+#define tcache_bin_info JEMALLOC_N(tcache_bin_info)
+#define tcache_boot JEMALLOC_N(tcache_boot)
+#define tcache_cleanup JEMALLOC_N(tcache_cleanup)
+#define tcache_create_explicit JEMALLOC_N(tcache_create_explicit)
+#define tcache_event_hard JEMALLOC_N(tcache_event_hard)
+#define tcache_flush JEMALLOC_N(tcache_flush)
+#define tcache_maxclass JEMALLOC_N(tcache_maxclass)
+#define tcache_postfork_child JEMALLOC_N(tcache_postfork_child)
+#define tcache_postfork_parent JEMALLOC_N(tcache_postfork_parent)
+#define tcache_prefork JEMALLOC_N(tcache_prefork)
+#define tcaches JEMALLOC_N(tcaches)
+#define tcache_salloc JEMALLOC_N(tcache_salloc)
+#define tcaches_create JEMALLOC_N(tcaches_create)
+#define tcaches_destroy JEMALLOC_N(tcaches_destroy)
+#define tcaches_flush JEMALLOC_N(tcaches_flush)
+#define tcache_stats_merge JEMALLOC_N(tcache_stats_merge)
+#define tsd_tcache_data_init JEMALLOC_N(tsd_tcache_data_init)
+#define tsd_tcache_enabled_data_init JEMALLOC_N(tsd_tcache_enabled_data_init)
+#define malloc_tsd_boot0 JEMALLOC_N(malloc_tsd_boot0)
+#define malloc_tsd_boot1 JEMALLOC_N(malloc_tsd_boot1)
+#define malloc_tsd_cleanup_register JEMALLOC_N(malloc_tsd_cleanup_register)
+#define malloc_tsd_dalloc JEMALLOC_N(malloc_tsd_dalloc)
+#define malloc_tsd_malloc JEMALLOC_N(malloc_tsd_malloc)
+#define tsd_boot_wrapper JEMALLOC_N(tsd_boot_wrapper)
+#define tsd_booted JEMALLOC_N(tsd_booted)
+#define tsd_cleanup JEMALLOC_N(tsd_cleanup)
+#define tsd_fetch_slow JEMALLOC_N(tsd_fetch_slow)
+#define tsd_init_check_recursion JEMALLOC_N(tsd_init_check_recursion)
+#define tsd_init_finish JEMALLOC_N(tsd_init_finish)
+#define tsd_init_head JEMALLOC_N(tsd_init_head)
+#define tsd_slow_update JEMALLOC_N(tsd_slow_update)
+#define tsd_tls JEMALLOC_N(tsd_tls)
+#define tsd_tsd JEMALLOC_N(tsd_tsd)
+#define witness_depth_error JEMALLOC_N(witness_depth_error)
+#define witnesses_cleanup JEMALLOC_N(witnesses_cleanup)
+#define witness_init JEMALLOC_N(witness_init)
+#define witness_lock_error JEMALLOC_N(witness_lock_error)
+#define witness_not_owner_error JEMALLOC_N(witness_not_owner_error)
+#define witness_owner_error JEMALLOC_N(witness_owner_error)
+#define witness_postfork_child JEMALLOC_N(witness_postfork_child)
+#define witness_postfork_parent JEMALLOC_N(witness_postfork_parent)
+#define witness_prefork JEMALLOC_N(witness_prefork)
diff --git a/include/jemalloc/internal/public_namespace.h b/include/jemalloc/internal/public_namespace.h
new file mode 100644
index 00000000..3bbd59d0
--- /dev/null
+++ b/include/jemalloc/internal/public_namespace.h
@@ -0,0 +1,22 @@
+#define je_aligned_alloc JEMALLOC_N(aligned_alloc)
+#define je_calloc JEMALLOC_N(calloc)
+#define je_dallocx JEMALLOC_N(dallocx)
+#define je_free JEMALLOC_N(free)
+#define je_mallctl JEMALLOC_N(mallctl)
+#define je_mallctlbymib JEMALLOC_N(mallctlbymib)
+#define je_mallctlnametomib JEMALLOC_N(mallctlnametomib)
+#define je_malloc JEMALLOC_N(malloc)
+#define je_malloc_conf JEMALLOC_N(malloc_conf)
+#define je_malloc_message JEMALLOC_N(malloc_message)
+#define je_malloc_stats_print JEMALLOC_N(malloc_stats_print)
+#define je_malloc_usable_size JEMALLOC_N(malloc_usable_size)
+#define je_mallocx JEMALLOC_N(mallocx)
+#define je_nallocx JEMALLOC_N(nallocx)
+#define je_posix_memalign JEMALLOC_N(posix_memalign)
+#define je_rallocx JEMALLOC_N(rallocx)
+#define je_realloc JEMALLOC_N(realloc)
+#define je_sallocx JEMALLOC_N(sallocx)
+#define je_sdallocx JEMALLOC_N(sdallocx)
+#define je_xallocx JEMALLOC_N(xallocx)
+#define je_memalign JEMALLOC_N(memalign)
+#define je_valloc JEMALLOC_N(valloc)
diff --git a/include/jemalloc/internal/public_unnamespace.h b/include/jemalloc/internal/public_unnamespace.h
new file mode 100644
index 00000000..197795a5
--- /dev/null
+++ b/include/jemalloc/internal/public_unnamespace.h
@@ -0,0 +1,22 @@
+#undef je_aligned_alloc
+#undef je_calloc
+#undef je_dallocx
+#undef je_free
+#undef je_mallctl
+#undef je_mallctlbymib
+#undef je_mallctlnametomib
+#undef je_malloc
+#undef je_malloc_conf
+#undef je_malloc_message
+#undef je_malloc_stats_print
+#undef je_malloc_usable_size
+#undef je_mallocx
+#undef je_nallocx
+#undef je_posix_memalign
+#undef je_rallocx
+#undef je_realloc
+#undef je_sallocx
+#undef je_sdallocx
+#undef je_xallocx
+#undef je_memalign
+#undef je_valloc
diff --git a/include/jemalloc/internal/size_classes.h b/include/jemalloc/internal/size_classes.h
new file mode 100644
index 00000000..0b7d3cd3
--- /dev/null
+++ b/include/jemalloc/internal/size_classes.h
@@ -0,0 +1,1428 @@
+#ifndef JEMALLOC_INTERNAL_SIZE_CLASSES_H
+#define JEMALLOC_INTERNAL_SIZE_CLASSES_H
+
+/* This file was automatically generated by size_classes.sh. */
+
+#include "jemalloc/internal/jemalloc_internal_types.h"
+
+/*
+ * This header file defines:
+ *
+ * LG_SIZE_CLASS_GROUP: Lg of size class count for each size doubling.
+ * LG_TINY_MIN: Lg of minimum size class to support.
+ * SIZE_CLASSES: Complete table of SC(index, lg_grp, lg_delta, ndelta, psz,
+ * bin, pgs, lg_delta_lookup) tuples.
+ * index: Size class index.
+ * lg_grp: Lg group base size (no deltas added).
+ * lg_delta: Lg delta to previous size class.
+ * ndelta: Delta multiplier. size == 1<<lg_grp + ndelta<<lg_delta
+ * psz: 'yes' if a multiple of the page size, 'no' otherwise.
+ * bin: 'yes' if a small bin size class, 'no' otherwise.
+ * pgs: Slab page count if a small bin size class, 0 otherwise.
+ * lg_delta_lookup: Same as lg_delta if a lookup table size class, 'no'
+ * otherwise.
+ * NTBINS: Number of tiny bins.
+ * NLBINS: Number of bins supported by the lookup table.
+ * NBINS: Number of small size class bins.
+ * NSIZES: Number of size classes.
+ * LG_CEIL_NSIZES: Number of bits required to store NSIZES.
+ * NPSIZES: Number of size classes that are a multiple of (1U << LG_PAGE).
+ * LG_TINY_MAXCLASS: Lg of maximum tiny size class.
+ * LOOKUP_MAXCLASS: Maximum size class included in lookup table.
+ * SMALL_MAXCLASS: Maximum small size class.
+ * LG_LARGE_MINCLASS: Lg of minimum large size class.
+ * LARGE_MAXCLASS: Maximum (large) size class.
+ */
+
+#define LG_SIZE_CLASS_GROUP 2
+#define LG_TINY_MIN 3
+
+#if (LG_SIZEOF_PTR == 2 && LG_TINY_MIN == 3 && LG_QUANTUM == 3 && LG_PAGE == 12)
+#define SIZE_CLASSES \
+ /* index, lg_grp, lg_delta, ndelta, psz, bin, pgs, lg_delta_lookup */ \
+ SC( 0, 3, 3, 0, no, yes, 1, 3) \
+ SC( 1, 3, 3, 1, no, yes, 1, 3) \
+ SC( 2, 3, 3, 2, no, yes, 3, 3) \
+ SC( 3, 3, 3, 3, no, yes, 1, 3) \
+ \
+ SC( 4, 5, 3, 1, no, yes, 5, 3) \
+ SC( 5, 5, 3, 2, no, yes, 3, 3) \
+ SC( 6, 5, 3, 3, no, yes, 7, 3) \
+ SC( 7, 5, 3, 4, no, yes, 1, 3) \
+ \
+ SC( 8, 6, 4, 1, no, yes, 5, 4) \
+ SC( 9, 6, 4, 2, no, yes, 3, 4) \
+ SC( 10, 6, 4, 3, no, yes, 7, 4) \
+ SC( 11, 6, 4, 4, no, yes, 1, 4) \
+ \
+ SC( 12, 7, 5, 1, no, yes, 5, 5) \
+ SC( 13, 7, 5, 2, no, yes, 3, 5) \
+ SC( 14, 7, 5, 3, no, yes, 7, 5) \
+ SC( 15, 7, 5, 4, no, yes, 1, 5) \
+ \
+ SC( 16, 8, 6, 1, no, yes, 5, 6) \
+ SC( 17, 8, 6, 2, no, yes, 3, 6) \
+ SC( 18, 8, 6, 3, no, yes, 7, 6) \
+ SC( 19, 8, 6, 4, no, yes, 1, 6) \
+ \
+ SC( 20, 9, 7, 1, no, yes, 5, 7) \
+ SC( 21, 9, 7, 2, no, yes, 3, 7) \
+ SC( 22, 9, 7, 3, no, yes, 7, 7) \
+ SC( 23, 9, 7, 4, no, yes, 1, 7) \
+ \
+ SC( 24, 10, 8, 1, no, yes, 5, 8) \
+ SC( 25, 10, 8, 2, no, yes, 3, 8) \
+ SC( 26, 10, 8, 3, no, yes, 7, 8) \
+ SC( 27, 10, 8, 4, no, yes, 1, 8) \
+ \
+ SC( 28, 11, 9, 1, no, yes, 5, 9) \
+ SC( 29, 11, 9, 2, no, yes, 3, 9) \
+ SC( 30, 11, 9, 3, no, yes, 7, 9) \
+ SC( 31, 11, 9, 4, yes, yes, 1, 9) \
+ \
+ SC( 32, 12, 10, 1, no, yes, 5, no) \
+ SC( 33, 12, 10, 2, no, yes, 3, no) \
+ SC( 34, 12, 10, 3, no, yes, 7, no) \
+ SC( 35, 12, 10, 4, yes, yes, 2, no) \
+ \
+ SC( 36, 13, 11, 1, no, yes, 5, no) \
+ SC( 37, 13, 11, 2, yes, yes, 3, no) \
+ SC( 38, 13, 11, 3, no, yes, 7, no) \
+ SC( 39, 13, 11, 4, yes, no, 0, no) \
+ \
+ SC( 40, 14, 12, 1, yes, no, 0, no) \
+ SC( 41, 14, 12, 2, yes, no, 0, no) \
+ SC( 42, 14, 12, 3, yes, no, 0, no) \
+ SC( 43, 14, 12, 4, yes, no, 0, no) \
+ \
+ SC( 44, 15, 13, 1, yes, no, 0, no) \
+ SC( 45, 15, 13, 2, yes, no, 0, no) \
+ SC( 46, 15, 13, 3, yes, no, 0, no) \
+ SC( 47, 15, 13, 4, yes, no, 0, no) \
+ \
+ SC( 48, 16, 14, 1, yes, no, 0, no) \
+ SC( 49, 16, 14, 2, yes, no, 0, no) \
+ SC( 50, 16, 14, 3, yes, no, 0, no) \
+ SC( 51, 16, 14, 4, yes, no, 0, no) \
+ \
+ SC( 52, 17, 15, 1, yes, no, 0, no) \
+ SC( 53, 17, 15, 2, yes, no, 0, no) \
+ SC( 54, 17, 15, 3, yes, no, 0, no) \
+ SC( 55, 17, 15, 4, yes, no, 0, no) \
+ \
+ SC( 56, 18, 16, 1, yes, no, 0, no) \
+ SC( 57, 18, 16, 2, yes, no, 0, no) \
+ SC( 58, 18, 16, 3, yes, no, 0, no) \
+ SC( 59, 18, 16, 4, yes, no, 0, no) \
+ \
+ SC( 60, 19, 17, 1, yes, no, 0, no) \
+ SC( 61, 19, 17, 2, yes, no, 0, no) \
+ SC( 62, 19, 17, 3, yes, no, 0, no) \
+ SC( 63, 19, 17, 4, yes, no, 0, no) \
+ \
+ SC( 64, 20, 18, 1, yes, no, 0, no) \
+ SC( 65, 20, 18, 2, yes, no, 0, no) \
+ SC( 66, 20, 18, 3, yes, no, 0, no) \
+ SC( 67, 20, 18, 4, yes, no, 0, no) \
+ \
+ SC( 68, 21, 19, 1, yes, no, 0, no) \
+ SC( 69, 21, 19, 2, yes, no, 0, no) \
+ SC( 70, 21, 19, 3, yes, no, 0, no) \
+ SC( 71, 21, 19, 4, yes, no, 0, no) \
+ \
+ SC( 72, 22, 20, 1, yes, no, 0, no) \
+ SC( 73, 22, 20, 2, yes, no, 0, no) \
+ SC( 74, 22, 20, 3, yes, no, 0, no) \
+ SC( 75, 22, 20, 4, yes, no, 0, no) \
+ \
+ SC( 76, 23, 21, 1, yes, no, 0, no) \
+ SC( 77, 23, 21, 2, yes, no, 0, no) \
+ SC( 78, 23, 21, 3, yes, no, 0, no) \
+ SC( 79, 23, 21, 4, yes, no, 0, no) \
+ \
+ SC( 80, 24, 22, 1, yes, no, 0, no) \
+ SC( 81, 24, 22, 2, yes, no, 0, no) \
+ SC( 82, 24, 22, 3, yes, no, 0, no) \
+ SC( 83, 24, 22, 4, yes, no, 0, no) \
+ \
+ SC( 84, 25, 23, 1, yes, no, 0, no) \
+ SC( 85, 25, 23, 2, yes, no, 0, no) \
+ SC( 86, 25, 23, 3, yes, no, 0, no) \
+ SC( 87, 25, 23, 4, yes, no, 0, no) \
+ \
+ SC( 88, 26, 24, 1, yes, no, 0, no) \
+ SC( 89, 26, 24, 2, yes, no, 0, no) \
+ SC( 90, 26, 24, 3, yes, no, 0, no) \
+ SC( 91, 26, 24, 4, yes, no, 0, no) \
+ \
+ SC( 92, 27, 25, 1, yes, no, 0, no) \
+ SC( 93, 27, 25, 2, yes, no, 0, no) \
+ SC( 94, 27, 25, 3, yes, no, 0, no) \
+ SC( 95, 27, 25, 4, yes, no, 0, no) \
+ \
+ SC( 96, 28, 26, 1, yes, no, 0, no) \
+ SC( 97, 28, 26, 2, yes, no, 0, no) \
+ SC( 98, 28, 26, 3, yes, no, 0, no) \
+ SC( 99, 28, 26, 4, yes, no, 0, no) \
+ \
+ SC(100, 29, 27, 1, yes, no, 0, no) \
+ SC(101, 29, 27, 2, yes, no, 0, no) \
+ SC(102, 29, 27, 3, yes, no, 0, no) \
+ SC(103, 29, 27, 4, yes, no, 0, no) \
+ \
+ SC(104, 30, 28, 1, yes, no, 0, no) \
+ SC(105, 30, 28, 2, yes, no, 0, no) \
+ SC(106, 30, 28, 3, yes, no, 0, no) \
+
+#define SIZE_CLASSES_DEFINED
+#define NTBINS 0
+#define NLBINS 32
+#define NBINS 39
+#define NSIZES 107
+#define LG_CEIL_NSIZES 7
+#define NPSIZES 71
+#define LG_TINY_MAXCLASS "NA"
+#define LOOKUP_MAXCLASS ((((size_t)1) << 11) + (((size_t)4) << 9))
+#define SMALL_MAXCLASS ((((size_t)1) << 13) + (((size_t)3) << 11))
+#define LG_LARGE_MINCLASS 14
+#define LARGE_MINCLASS (ZU(1) << LG_LARGE_MINCLASS)
+#define LARGE_MAXCLASS ((((size_t)1) << 30) + (((size_t)3) << 28))
+#endif
+
+#if (LG_SIZEOF_PTR == 2 && LG_TINY_MIN == 3 && LG_QUANTUM == 4 && LG_PAGE == 12)
+#define SIZE_CLASSES \
+ /* index, lg_grp, lg_delta, ndelta, psz, bin, pgs, lg_delta_lookup */ \
+ SC( 0, 3, 3, 0, no, yes, 1, 3) \
+ \
+ SC( 1, 3, 3, 1, no, yes, 1, 3) \
+ SC( 2, 4, 4, 1, no, yes, 1, 4) \
+ SC( 3, 4, 4, 2, no, yes, 3, 4) \
+ SC( 4, 4, 4, 3, no, yes, 1, 4) \
+ \
+ SC( 5, 6, 4, 1, no, yes, 5, 4) \
+ SC( 6, 6, 4, 2, no, yes, 3, 4) \
+ SC( 7, 6, 4, 3, no, yes, 7, 4) \
+ SC( 8, 6, 4, 4, no, yes, 1, 4) \
+ \
+ SC( 9, 7, 5, 1, no, yes, 5, 5) \
+ SC( 10, 7, 5, 2, no, yes, 3, 5) \
+ SC( 11, 7, 5, 3, no, yes, 7, 5) \
+ SC( 12, 7, 5, 4, no, yes, 1, 5) \
+ \
+ SC( 13, 8, 6, 1, no, yes, 5, 6) \
+ SC( 14, 8, 6, 2, no, yes, 3, 6) \
+ SC( 15, 8, 6, 3, no, yes, 7, 6) \
+ SC( 16, 8, 6, 4, no, yes, 1, 6) \
+ \
+ SC( 17, 9, 7, 1, no, yes, 5, 7) \
+ SC( 18, 9, 7, 2, no, yes, 3, 7) \
+ SC( 19, 9, 7, 3, no, yes, 7, 7) \
+ SC( 20, 9, 7, 4, no, yes, 1, 7) \
+ \
+ SC( 21, 10, 8, 1, no, yes, 5, 8) \
+ SC( 22, 10, 8, 2, no, yes, 3, 8) \
+ SC( 23, 10, 8, 3, no, yes, 7, 8) \
+ SC( 24, 10, 8, 4, no, yes, 1, 8) \
+ \
+ SC( 25, 11, 9, 1, no, yes, 5, 9) \
+ SC( 26, 11, 9, 2, no, yes, 3, 9) \
+ SC( 27, 11, 9, 3, no, yes, 7, 9) \
+ SC( 28, 11, 9, 4, yes, yes, 1, 9) \
+ \
+ SC( 29, 12, 10, 1, no, yes, 5, no) \
+ SC( 30, 12, 10, 2, no, yes, 3, no) \
+ SC( 31, 12, 10, 3, no, yes, 7, no) \
+ SC( 32, 12, 10, 4, yes, yes, 2, no) \
+ \
+ SC( 33, 13, 11, 1, no, yes, 5, no) \
+ SC( 34, 13, 11, 2, yes, yes, 3, no) \
+ SC( 35, 13, 11, 3, no, yes, 7, no) \
+ SC( 36, 13, 11, 4, yes, no, 0, no) \
+ \
+ SC( 37, 14, 12, 1, yes, no, 0, no) \
+ SC( 38, 14, 12, 2, yes, no, 0, no) \
+ SC( 39, 14, 12, 3, yes, no, 0, no) \
+ SC( 40, 14, 12, 4, yes, no, 0, no) \
+ \
+ SC( 41, 15, 13, 1, yes, no, 0, no) \
+ SC( 42, 15, 13, 2, yes, no, 0, no) \
+ SC( 43, 15, 13, 3, yes, no, 0, no) \
+ SC( 44, 15, 13, 4, yes, no, 0, no) \
+ \
+ SC( 45, 16, 14, 1, yes, no, 0, no) \
+ SC( 46, 16, 14, 2, yes, no, 0, no) \
+ SC( 47, 16, 14, 3, yes, no, 0, no) \
+ SC( 48, 16, 14, 4, yes, no, 0, no) \
+ \
+ SC( 49, 17, 15, 1, yes, no, 0, no) \
+ SC( 50, 17, 15, 2, yes, no, 0, no) \
+ SC( 51, 17, 15, 3, yes, no, 0, no) \
+ SC( 52, 17, 15, 4, yes, no, 0, no) \
+ \
+ SC( 53, 18, 16, 1, yes, no, 0, no) \
+ SC( 54, 18, 16, 2, yes, no, 0, no) \
+ SC( 55, 18, 16, 3, yes, no, 0, no) \
+ SC( 56, 18, 16, 4, yes, no, 0, no) \
+ \
+ SC( 57, 19, 17, 1, yes, no, 0, no) \
+ SC( 58, 19, 17, 2, yes, no, 0, no) \
+ SC( 59, 19, 17, 3, yes, no, 0, no) \
+ SC( 60, 19, 17, 4, yes, no, 0, no) \
+ \
+ SC( 61, 20, 18, 1, yes, no, 0, no) \
+ SC( 62, 20, 18, 2, yes, no, 0, no) \
+ SC( 63, 20, 18, 3, yes, no, 0, no) \
+ SC( 64, 20, 18, 4, yes, no, 0, no) \
+ \
+ SC( 65, 21, 19, 1, yes, no, 0, no) \
+ SC( 66, 21, 19, 2, yes, no, 0, no) \
+ SC( 67, 21, 19, 3, yes, no, 0, no) \
+ SC( 68, 21, 19, 4, yes, no, 0, no) \
+ \
+ SC( 69, 22, 20, 1, yes, no, 0, no) \
+ SC( 70, 22, 20, 2, yes, no, 0, no) \
+ SC( 71, 22, 20, 3, yes, no, 0, no) \
+ SC( 72, 22, 20, 4, yes, no, 0, no) \
+ \
+ SC( 73, 23, 21, 1, yes, no, 0, no) \
+ SC( 74, 23, 21, 2, yes, no, 0, no) \
+ SC( 75, 23, 21, 3, yes, no, 0, no) \
+ SC( 76, 23, 21, 4, yes, no, 0, no) \
+ \
+ SC( 77, 24, 22, 1, yes, no, 0, no) \
+ SC( 78, 24, 22, 2, yes, no, 0, no) \
+ SC( 79, 24, 22, 3, yes, no, 0, no) \
+ SC( 80, 24, 22, 4, yes, no, 0, no) \
+ \
+ SC( 81, 25, 23, 1, yes, no, 0, no) \
+ SC( 82, 25, 23, 2, yes, no, 0, no) \
+ SC( 83, 25, 23, 3, yes, no, 0, no) \
+ SC( 84, 25, 23, 4, yes, no, 0, no) \
+ \
+ SC( 85, 26, 24, 1, yes, no, 0, no) \
+ SC( 86, 26, 24, 2, yes, no, 0, no) \
+ SC( 87, 26, 24, 3, yes, no, 0, no) \
+ SC( 88, 26, 24, 4, yes, no, 0, no) \
+ \
+ SC( 89, 27, 25, 1, yes, no, 0, no) \
+ SC( 90, 27, 25, 2, yes, no, 0, no) \
+ SC( 91, 27, 25, 3, yes, no, 0, no) \
+ SC( 92, 27, 25, 4, yes, no, 0, no) \
+ \
+ SC( 93, 28, 26, 1, yes, no, 0, no) \
+ SC( 94, 28, 26, 2, yes, no, 0, no) \
+ SC( 95, 28, 26, 3, yes, no, 0, no) \
+ SC( 96, 28, 26, 4, yes, no, 0, no) \
+ \
+ SC( 97, 29, 27, 1, yes, no, 0, no) \
+ SC( 98, 29, 27, 2, yes, no, 0, no) \
+ SC( 99, 29, 27, 3, yes, no, 0, no) \
+ SC(100, 29, 27, 4, yes, no, 0, no) \
+ \
+ SC(101, 30, 28, 1, yes, no, 0, no) \
+ SC(102, 30, 28, 2, yes, no, 0, no) \
+ SC(103, 30, 28, 3, yes, no, 0, no) \
+
+#define SIZE_CLASSES_DEFINED
+#define NTBINS 1
+#define NLBINS 29
+#define NBINS 36
+#define NSIZES 104
+#define LG_CEIL_NSIZES 7
+#define NPSIZES 71
+#define LG_TINY_MAXCLASS 3
+#define LOOKUP_MAXCLASS ((((size_t)1) << 11) + (((size_t)4) << 9))
+#define SMALL_MAXCLASS ((((size_t)1) << 13) + (((size_t)3) << 11))
+#define LG_LARGE_MINCLASS 14
+#define LARGE_MINCLASS (ZU(1) << LG_LARGE_MINCLASS)
+#define LARGE_MAXCLASS ((((size_t)1) << 30) + (((size_t)3) << 28))
+#endif
+
+#if (LG_SIZEOF_PTR == 2 && LG_TINY_MIN == 4 && LG_QUANTUM == 4 && LG_PAGE == 12)
+#define SIZE_CLASSES \
+ /* index, lg_grp, lg_delta, ndelta, psz, bin, pgs, lg_delta_lookup */ \
+ SC( 0, 4, 4, 0, no, yes, 1, 4) \
+ SC( 1, 4, 4, 1, no, yes, 1, 4) \
+ SC( 2, 4, 4, 2, no, yes, 3, 4) \
+ SC( 3, 4, 4, 3, no, yes, 1, 4) \
+ \
+ SC( 4, 6, 4, 1, no, yes, 5, 4) \
+ SC( 5, 6, 4, 2, no, yes, 3, 4) \
+ SC( 6, 6, 4, 3, no, yes, 7, 4) \
+ SC( 7, 6, 4, 4, no, yes, 1, 4) \
+ \
+ SC( 8, 7, 5, 1, no, yes, 5, 5) \
+ SC( 9, 7, 5, 2, no, yes, 3, 5) \
+ SC( 10, 7, 5, 3, no, yes, 7, 5) \
+ SC( 11, 7, 5, 4, no, yes, 1, 5) \
+ \
+ SC( 12, 8, 6, 1, no, yes, 5, 6) \
+ SC( 13, 8, 6, 2, no, yes, 3, 6) \
+ SC( 14, 8, 6, 3, no, yes, 7, 6) \
+ SC( 15, 8, 6, 4, no, yes, 1, 6) \
+ \
+ SC( 16, 9, 7, 1, no, yes, 5, 7) \
+ SC( 17, 9, 7, 2, no, yes, 3, 7) \
+ SC( 18, 9, 7, 3, no, yes, 7, 7) \
+ SC( 19, 9, 7, 4, no, yes, 1, 7) \
+ \
+ SC( 20, 10, 8, 1, no, yes, 5, 8) \
+ SC( 21, 10, 8, 2, no, yes, 3, 8) \
+ SC( 22, 10, 8, 3, no, yes, 7, 8) \
+ SC( 23, 10, 8, 4, no, yes, 1, 8) \
+ \
+ SC( 24, 11, 9, 1, no, yes, 5, 9) \
+ SC( 25, 11, 9, 2, no, yes, 3, 9) \
+ SC( 26, 11, 9, 3, no, yes, 7, 9) \
+ SC( 27, 11, 9, 4, yes, yes, 1, 9) \
+ \
+ SC( 28, 12, 10, 1, no, yes, 5, no) \
+ SC( 29, 12, 10, 2, no, yes, 3, no) \
+ SC( 30, 12, 10, 3, no, yes, 7, no) \
+ SC( 31, 12, 10, 4, yes, yes, 2, no) \
+ \
+ SC( 32, 13, 11, 1, no, yes, 5, no) \
+ SC( 33, 13, 11, 2, yes, yes, 3, no) \
+ SC( 34, 13, 11, 3, no, yes, 7, no) \
+ SC( 35, 13, 11, 4, yes, no, 0, no) \
+ \
+ SC( 36, 14, 12, 1, yes, no, 0, no) \
+ SC( 37, 14, 12, 2, yes, no, 0, no) \
+ SC( 38, 14, 12, 3, yes, no, 0, no) \
+ SC( 39, 14, 12, 4, yes, no, 0, no) \
+ \
+ SC( 40, 15, 13, 1, yes, no, 0, no) \
+ SC( 41, 15, 13, 2, yes, no, 0, no) \
+ SC( 42, 15, 13, 3, yes, no, 0, no) \
+ SC( 43, 15, 13, 4, yes, no, 0, no) \
+ \
+ SC( 44, 16, 14, 1, yes, no, 0, no) \
+ SC( 45, 16, 14, 2, yes, no, 0, no) \
+ SC( 46, 16, 14, 3, yes, no, 0, no) \
+ SC( 47, 16, 14, 4, yes, no, 0, no) \
+ \
+ SC( 48, 17, 15, 1, yes, no, 0, no) \
+ SC( 49, 17, 15, 2, yes, no, 0, no) \
+ SC( 50, 17, 15, 3, yes, no, 0, no) \
+ SC( 51, 17, 15, 4, yes, no, 0, no) \
+ \
+ SC( 52, 18, 16, 1, yes, no, 0, no) \
+ SC( 53, 18, 16, 2, yes, no, 0, no) \
+ SC( 54, 18, 16, 3, yes, no, 0, no) \
+ SC( 55, 18, 16, 4, yes, no, 0, no) \
+ \
+ SC( 56, 19, 17, 1, yes, no, 0, no) \
+ SC( 57, 19, 17, 2, yes, no, 0, no) \
+ SC( 58, 19, 17, 3, yes, no, 0, no) \
+ SC( 59, 19, 17, 4, yes, no, 0, no) \
+ \
+ SC( 60, 20, 18, 1, yes, no, 0, no) \
+ SC( 61, 20, 18, 2, yes, no, 0, no) \
+ SC( 62, 20, 18, 3, yes, no, 0, no) \
+ SC( 63, 20, 18, 4, yes, no, 0, no) \
+ \
+ SC( 64, 21, 19, 1, yes, no, 0, no) \
+ SC( 65, 21, 19, 2, yes, no, 0, no) \
+ SC( 66, 21, 19, 3, yes, no, 0, no) \
+ SC( 67, 21, 19, 4, yes, no, 0, no) \
+ \
+ SC( 68, 22, 20, 1, yes, no, 0, no) \
+ SC( 69, 22, 20, 2, yes, no, 0, no) \
+ SC( 70, 22, 20, 3, yes, no, 0, no) \
+ SC( 71, 22, 20, 4, yes, no, 0, no) \
+ \
+ SC( 72, 23, 21, 1, yes, no, 0, no) \
+ SC( 73, 23, 21, 2, yes, no, 0, no) \
+ SC( 74, 23, 21, 3, yes, no, 0, no) \
+ SC( 75, 23, 21, 4, yes, no, 0, no) \
+ \
+ SC( 76, 24, 22, 1, yes, no, 0, no) \
+ SC( 77, 24, 22, 2, yes, no, 0, no) \
+ SC( 78, 24, 22, 3, yes, no, 0, no) \
+ SC( 79, 24, 22, 4, yes, no, 0, no) \
+ \
+ SC( 80, 25, 23, 1, yes, no, 0, no) \
+ SC( 81, 25, 23, 2, yes, no, 0, no) \
+ SC( 82, 25, 23, 3, yes, no, 0, no) \
+ SC( 83, 25, 23, 4, yes, no, 0, no) \
+ \
+ SC( 84, 26, 24, 1, yes, no, 0, no) \
+ SC( 85, 26, 24, 2, yes, no, 0, no) \
+ SC( 86, 26, 24, 3, yes, no, 0, no) \
+ SC( 87, 26, 24, 4, yes, no, 0, no) \
+ \
+ SC( 88, 27, 25, 1, yes, no, 0, no) \
+ SC( 89, 27, 25, 2, yes, no, 0, no) \
+ SC( 90, 27, 25, 3, yes, no, 0, no) \
+ SC( 91, 27, 25, 4, yes, no, 0, no) \
+ \
+ SC( 92, 28, 26, 1, yes, no, 0, no) \
+ SC( 93, 28, 26, 2, yes, no, 0, no) \
+ SC( 94, 28, 26, 3, yes, no, 0, no) \
+ SC( 95, 28, 26, 4, yes, no, 0, no) \
+ \
+ SC( 96, 29, 27, 1, yes, no, 0, no) \
+ SC( 97, 29, 27, 2, yes, no, 0, no) \
+ SC( 98, 29, 27, 3, yes, no, 0, no) \
+ SC( 99, 29, 27, 4, yes, no, 0, no) \
+ \
+ SC(100, 30, 28, 1, yes, no, 0, no) \
+ SC(101, 30, 28, 2, yes, no, 0, no) \
+ SC(102, 30, 28, 3, yes, no, 0, no) \
+
+#define SIZE_CLASSES_DEFINED
+#define NTBINS 0
+#define NLBINS 28
+#define NBINS 35
+#define NSIZES 103
+#define LG_CEIL_NSIZES 7
+#define NPSIZES 71
+#define LG_TINY_MAXCLASS "NA"
+#define LOOKUP_MAXCLASS ((((size_t)1) << 11) + (((size_t)4) << 9))
+#define SMALL_MAXCLASS ((((size_t)1) << 13) + (((size_t)3) << 11))
+#define LG_LARGE_MINCLASS 14
+#define LARGE_MINCLASS (ZU(1) << LG_LARGE_MINCLASS)
+#define LARGE_MAXCLASS ((((size_t)1) << 30) + (((size_t)3) << 28))
+#endif
+
+#if (LG_SIZEOF_PTR == 3 && LG_TINY_MIN == 3 && LG_QUANTUM == 3 && LG_PAGE == 12)
+#define SIZE_CLASSES \
+ /* index, lg_grp, lg_delta, ndelta, psz, bin, pgs, lg_delta_lookup */ \
+ SC( 0, 3, 3, 0, no, yes, 1, 3) \
+ SC( 1, 3, 3, 1, no, yes, 1, 3) \
+ SC( 2, 3, 3, 2, no, yes, 3, 3) \
+ SC( 3, 3, 3, 3, no, yes, 1, 3) \
+ \
+ SC( 4, 5, 3, 1, no, yes, 5, 3) \
+ SC( 5, 5, 3, 2, no, yes, 3, 3) \
+ SC( 6, 5, 3, 3, no, yes, 7, 3) \
+ SC( 7, 5, 3, 4, no, yes, 1, 3) \
+ \
+ SC( 8, 6, 4, 1, no, yes, 5, 4) \
+ SC( 9, 6, 4, 2, no, yes, 3, 4) \
+ SC( 10, 6, 4, 3, no, yes, 7, 4) \
+ SC( 11, 6, 4, 4, no, yes, 1, 4) \
+ \
+ SC( 12, 7, 5, 1, no, yes, 5, 5) \
+ SC( 13, 7, 5, 2, no, yes, 3, 5) \
+ SC( 14, 7, 5, 3, no, yes, 7, 5) \
+ SC( 15, 7, 5, 4, no, yes, 1, 5) \
+ \
+ SC( 16, 8, 6, 1, no, yes, 5, 6) \
+ SC( 17, 8, 6, 2, no, yes, 3, 6) \
+ SC( 18, 8, 6, 3, no, yes, 7, 6) \
+ SC( 19, 8, 6, 4, no, yes, 1, 6) \
+ \
+ SC( 20, 9, 7, 1, no, yes, 5, 7) \
+ SC( 21, 9, 7, 2, no, yes, 3, 7) \
+ SC( 22, 9, 7, 3, no, yes, 7, 7) \
+ SC( 23, 9, 7, 4, no, yes, 1, 7) \
+ \
+ SC( 24, 10, 8, 1, no, yes, 5, 8) \
+ SC( 25, 10, 8, 2, no, yes, 3, 8) \
+ SC( 26, 10, 8, 3, no, yes, 7, 8) \
+ SC( 27, 10, 8, 4, no, yes, 1, 8) \
+ \
+ SC( 28, 11, 9, 1, no, yes, 5, 9) \
+ SC( 29, 11, 9, 2, no, yes, 3, 9) \
+ SC( 30, 11, 9, 3, no, yes, 7, 9) \
+ SC( 31, 11, 9, 4, yes, yes, 1, 9) \
+ \
+ SC( 32, 12, 10, 1, no, yes, 5, no) \
+ SC( 33, 12, 10, 2, no, yes, 3, no) \
+ SC( 34, 12, 10, 3, no, yes, 7, no) \
+ SC( 35, 12, 10, 4, yes, yes, 2, no) \
+ \
+ SC( 36, 13, 11, 1, no, yes, 5, no) \
+ SC( 37, 13, 11, 2, yes, yes, 3, no) \
+ SC( 38, 13, 11, 3, no, yes, 7, no) \
+ SC( 39, 13, 11, 4, yes, no, 0, no) \
+ \
+ SC( 40, 14, 12, 1, yes, no, 0, no) \
+ SC( 41, 14, 12, 2, yes, no, 0, no) \
+ SC( 42, 14, 12, 3, yes, no, 0, no) \
+ SC( 43, 14, 12, 4, yes, no, 0, no) \
+ \
+ SC( 44, 15, 13, 1, yes, no, 0, no) \
+ SC( 45, 15, 13, 2, yes, no, 0, no) \
+ SC( 46, 15, 13, 3, yes, no, 0, no) \
+ SC( 47, 15, 13, 4, yes, no, 0, no) \
+ \
+ SC( 48, 16, 14, 1, yes, no, 0, no) \
+ SC( 49, 16, 14, 2, yes, no, 0, no) \
+ SC( 50, 16, 14, 3, yes, no, 0, no) \
+ SC( 51, 16, 14, 4, yes, no, 0, no) \
+ \
+ SC( 52, 17, 15, 1, yes, no, 0, no) \
+ SC( 53, 17, 15, 2, yes, no, 0, no) \
+ SC( 54, 17, 15, 3, yes, no, 0, no) \
+ SC( 55, 17, 15, 4, yes, no, 0, no) \
+ \
+ SC( 56, 18, 16, 1, yes, no, 0, no) \
+ SC( 57, 18, 16, 2, yes, no, 0, no) \
+ SC( 58, 18, 16, 3, yes, no, 0, no) \
+ SC( 59, 18, 16, 4, yes, no, 0, no) \
+ \
+ SC( 60, 19, 17, 1, yes, no, 0, no) \
+ SC( 61, 19, 17, 2, yes, no, 0, no) \
+ SC( 62, 19, 17, 3, yes, no, 0, no) \
+ SC( 63, 19, 17, 4, yes, no, 0, no) \
+ \
+ SC( 64, 20, 18, 1, yes, no, 0, no) \
+ SC( 65, 20, 18, 2, yes, no, 0, no) \
+ SC( 66, 20, 18, 3, yes, no, 0, no) \
+ SC( 67, 20, 18, 4, yes, no, 0, no) \
+ \
+ SC( 68, 21, 19, 1, yes, no, 0, no) \
+ SC( 69, 21, 19, 2, yes, no, 0, no) \
+ SC( 70, 21, 19, 3, yes, no, 0, no) \
+ SC( 71, 21, 19, 4, yes, no, 0, no) \
+ \
+ SC( 72, 22, 20, 1, yes, no, 0, no) \
+ SC( 73, 22, 20, 2, yes, no, 0, no) \
+ SC( 74, 22, 20, 3, yes, no, 0, no) \
+ SC( 75, 22, 20, 4, yes, no, 0, no) \
+ \
+ SC( 76, 23, 21, 1, yes, no, 0, no) \
+ SC( 77, 23, 21, 2, yes, no, 0, no) \
+ SC( 78, 23, 21, 3, yes, no, 0, no) \
+ SC( 79, 23, 21, 4, yes, no, 0, no) \
+ \
+ SC( 80, 24, 22, 1, yes, no, 0, no) \
+ SC( 81, 24, 22, 2, yes, no, 0, no) \
+ SC( 82, 24, 22, 3, yes, no, 0, no) \
+ SC( 83, 24, 22, 4, yes, no, 0, no) \
+ \
+ SC( 84, 25, 23, 1, yes, no, 0, no) \
+ SC( 85, 25, 23, 2, yes, no, 0, no) \
+ SC( 86, 25, 23, 3, yes, no, 0, no) \
+ SC( 87, 25, 23, 4, yes, no, 0, no) \
+ \
+ SC( 88, 26, 24, 1, yes, no, 0, no) \
+ SC( 89, 26, 24, 2, yes, no, 0, no) \
+ SC( 90, 26, 24, 3, yes, no, 0, no) \
+ SC( 91, 26, 24, 4, yes, no, 0, no) \
+ \
+ SC( 92, 27, 25, 1, yes, no, 0, no) \
+ SC( 93, 27, 25, 2, yes, no, 0, no) \
+ SC( 94, 27, 25, 3, yes, no, 0, no) \
+ SC( 95, 27, 25, 4, yes, no, 0, no) \
+ \
+ SC( 96, 28, 26, 1, yes, no, 0, no) \
+ SC( 97, 28, 26, 2, yes, no, 0, no) \
+ SC( 98, 28, 26, 3, yes, no, 0, no) \
+ SC( 99, 28, 26, 4, yes, no, 0, no) \
+ \
+ SC(100, 29, 27, 1, yes, no, 0, no) \
+ SC(101, 29, 27, 2, yes, no, 0, no) \
+ SC(102, 29, 27, 3, yes, no, 0, no) \
+ SC(103, 29, 27, 4, yes, no, 0, no) \
+ \
+ SC(104, 30, 28, 1, yes, no, 0, no) \
+ SC(105, 30, 28, 2, yes, no, 0, no) \
+ SC(106, 30, 28, 3, yes, no, 0, no) \
+ SC(107, 30, 28, 4, yes, no, 0, no) \
+ \
+ SC(108, 31, 29, 1, yes, no, 0, no) \
+ SC(109, 31, 29, 2, yes, no, 0, no) \
+ SC(110, 31, 29, 3, yes, no, 0, no) \
+ SC(111, 31, 29, 4, yes, no, 0, no) \
+ \
+ SC(112, 32, 30, 1, yes, no, 0, no) \
+ SC(113, 32, 30, 2, yes, no, 0, no) \
+ SC(114, 32, 30, 3, yes, no, 0, no) \
+ SC(115, 32, 30, 4, yes, no, 0, no) \
+ \
+ SC(116, 33, 31, 1, yes, no, 0, no) \
+ SC(117, 33, 31, 2, yes, no, 0, no) \
+ SC(118, 33, 31, 3, yes, no, 0, no) \
+ SC(119, 33, 31, 4, yes, no, 0, no) \
+ \
+ SC(120, 34, 32, 1, yes, no, 0, no) \
+ SC(121, 34, 32, 2, yes, no, 0, no) \
+ SC(122, 34, 32, 3, yes, no, 0, no) \
+ SC(123, 34, 32, 4, yes, no, 0, no) \
+ \
+ SC(124, 35, 33, 1, yes, no, 0, no) \
+ SC(125, 35, 33, 2, yes, no, 0, no) \
+ SC(126, 35, 33, 3, yes, no, 0, no) \
+ SC(127, 35, 33, 4, yes, no, 0, no) \
+ \
+ SC(128, 36, 34, 1, yes, no, 0, no) \
+ SC(129, 36, 34, 2, yes, no, 0, no) \
+ SC(130, 36, 34, 3, yes, no, 0, no) \
+ SC(131, 36, 34, 4, yes, no, 0, no) \
+ \
+ SC(132, 37, 35, 1, yes, no, 0, no) \
+ SC(133, 37, 35, 2, yes, no, 0, no) \
+ SC(134, 37, 35, 3, yes, no, 0, no) \
+ SC(135, 37, 35, 4, yes, no, 0, no) \
+ \
+ SC(136, 38, 36, 1, yes, no, 0, no) \
+ SC(137, 38, 36, 2, yes, no, 0, no) \
+ SC(138, 38, 36, 3, yes, no, 0, no) \
+ SC(139, 38, 36, 4, yes, no, 0, no) \
+ \
+ SC(140, 39, 37, 1, yes, no, 0, no) \
+ SC(141, 39, 37, 2, yes, no, 0, no) \
+ SC(142, 39, 37, 3, yes, no, 0, no) \
+ SC(143, 39, 37, 4, yes, no, 0, no) \
+ \
+ SC(144, 40, 38, 1, yes, no, 0, no) \
+ SC(145, 40, 38, 2, yes, no, 0, no) \
+ SC(146, 40, 38, 3, yes, no, 0, no) \
+ SC(147, 40, 38, 4, yes, no, 0, no) \
+ \
+ SC(148, 41, 39, 1, yes, no, 0, no) \
+ SC(149, 41, 39, 2, yes, no, 0, no) \
+ SC(150, 41, 39, 3, yes, no, 0, no) \
+ SC(151, 41, 39, 4, yes, no, 0, no) \
+ \
+ SC(152, 42, 40, 1, yes, no, 0, no) \
+ SC(153, 42, 40, 2, yes, no, 0, no) \
+ SC(154, 42, 40, 3, yes, no, 0, no) \
+ SC(155, 42, 40, 4, yes, no, 0, no) \
+ \
+ SC(156, 43, 41, 1, yes, no, 0, no) \
+ SC(157, 43, 41, 2, yes, no, 0, no) \
+ SC(158, 43, 41, 3, yes, no, 0, no) \
+ SC(159, 43, 41, 4, yes, no, 0, no) \
+ \
+ SC(160, 44, 42, 1, yes, no, 0, no) \
+ SC(161, 44, 42, 2, yes, no, 0, no) \
+ SC(162, 44, 42, 3, yes, no, 0, no) \
+ SC(163, 44, 42, 4, yes, no, 0, no) \
+ \
+ SC(164, 45, 43, 1, yes, no, 0, no) \
+ SC(165, 45, 43, 2, yes, no, 0, no) \
+ SC(166, 45, 43, 3, yes, no, 0, no) \
+ SC(167, 45, 43, 4, yes, no, 0, no) \
+ \
+ SC(168, 46, 44, 1, yes, no, 0, no) \
+ SC(169, 46, 44, 2, yes, no, 0, no) \
+ SC(170, 46, 44, 3, yes, no, 0, no) \
+ SC(171, 46, 44, 4, yes, no, 0, no) \
+ \
+ SC(172, 47, 45, 1, yes, no, 0, no) \
+ SC(173, 47, 45, 2, yes, no, 0, no) \
+ SC(174, 47, 45, 3, yes, no, 0, no) \
+ SC(175, 47, 45, 4, yes, no, 0, no) \
+ \
+ SC(176, 48, 46, 1, yes, no, 0, no) \
+ SC(177, 48, 46, 2, yes, no, 0, no) \
+ SC(178, 48, 46, 3, yes, no, 0, no) \
+ SC(179, 48, 46, 4, yes, no, 0, no) \
+ \
+ SC(180, 49, 47, 1, yes, no, 0, no) \
+ SC(181, 49, 47, 2, yes, no, 0, no) \
+ SC(182, 49, 47, 3, yes, no, 0, no) \
+ SC(183, 49, 47, 4, yes, no, 0, no) \
+ \
+ SC(184, 50, 48, 1, yes, no, 0, no) \
+ SC(185, 50, 48, 2, yes, no, 0, no) \
+ SC(186, 50, 48, 3, yes, no, 0, no) \
+ SC(187, 50, 48, 4, yes, no, 0, no) \
+ \
+ SC(188, 51, 49, 1, yes, no, 0, no) \
+ SC(189, 51, 49, 2, yes, no, 0, no) \
+ SC(190, 51, 49, 3, yes, no, 0, no) \
+ SC(191, 51, 49, 4, yes, no, 0, no) \
+ \
+ SC(192, 52, 50, 1, yes, no, 0, no) \
+ SC(193, 52, 50, 2, yes, no, 0, no) \
+ SC(194, 52, 50, 3, yes, no, 0, no) \
+ SC(195, 52, 50, 4, yes, no, 0, no) \
+ \
+ SC(196, 53, 51, 1, yes, no, 0, no) \
+ SC(197, 53, 51, 2, yes, no, 0, no) \
+ SC(198, 53, 51, 3, yes, no, 0, no) \
+ SC(199, 53, 51, 4, yes, no, 0, no) \
+ \
+ SC(200, 54, 52, 1, yes, no, 0, no) \
+ SC(201, 54, 52, 2, yes, no, 0, no) \
+ SC(202, 54, 52, 3, yes, no, 0, no) \
+ SC(203, 54, 52, 4, yes, no, 0, no) \
+ \
+ SC(204, 55, 53, 1, yes, no, 0, no) \
+ SC(205, 55, 53, 2, yes, no, 0, no) \
+ SC(206, 55, 53, 3, yes, no, 0, no) \
+ SC(207, 55, 53, 4, yes, no, 0, no) \
+ \
+ SC(208, 56, 54, 1, yes, no, 0, no) \
+ SC(209, 56, 54, 2, yes, no, 0, no) \
+ SC(210, 56, 54, 3, yes, no, 0, no) \
+ SC(211, 56, 54, 4, yes, no, 0, no) \
+ \
+ SC(212, 57, 55, 1, yes, no, 0, no) \
+ SC(213, 57, 55, 2, yes, no, 0, no) \
+ SC(214, 57, 55, 3, yes, no, 0, no) \
+ SC(215, 57, 55, 4, yes, no, 0, no) \
+ \
+ SC(216, 58, 56, 1, yes, no, 0, no) \
+ SC(217, 58, 56, 2, yes, no, 0, no) \
+ SC(218, 58, 56, 3, yes, no, 0, no) \
+ SC(219, 58, 56, 4, yes, no, 0, no) \
+ \
+ SC(220, 59, 57, 1, yes, no, 0, no) \
+ SC(221, 59, 57, 2, yes, no, 0, no) \
+ SC(222, 59, 57, 3, yes, no, 0, no) \
+ SC(223, 59, 57, 4, yes, no, 0, no) \
+ \
+ SC(224, 60, 58, 1, yes, no, 0, no) \
+ SC(225, 60, 58, 2, yes, no, 0, no) \
+ SC(226, 60, 58, 3, yes, no, 0, no) \
+ SC(227, 60, 58, 4, yes, no, 0, no) \
+ \
+ SC(228, 61, 59, 1, yes, no, 0, no) \
+ SC(229, 61, 59, 2, yes, no, 0, no) \
+ SC(230, 61, 59, 3, yes, no, 0, no) \
+ SC(231, 61, 59, 4, yes, no, 0, no) \
+ \
+ SC(232, 62, 60, 1, yes, no, 0, no) \
+ SC(233, 62, 60, 2, yes, no, 0, no) \
+ SC(234, 62, 60, 3, yes, no, 0, no) \
+
+#define SIZE_CLASSES_DEFINED
+#define NTBINS 0
+#define NLBINS 32
+#define NBINS 39
+#define NSIZES 235
+#define LG_CEIL_NSIZES 8
+#define NPSIZES 199
+#define LG_TINY_MAXCLASS "NA"
+#define LOOKUP_MAXCLASS ((((size_t)1) << 11) + (((size_t)4) << 9))
+#define SMALL_MAXCLASS ((((size_t)1) << 13) + (((size_t)3) << 11))
+#define LG_LARGE_MINCLASS 14
+#define LARGE_MINCLASS (ZU(1) << LG_LARGE_MINCLASS)
+#define LARGE_MAXCLASS ((((size_t)1) << 62) + (((size_t)3) << 60))
+#endif
+
+#if (LG_SIZEOF_PTR == 3 && LG_TINY_MIN == 3 && LG_QUANTUM == 4 && LG_PAGE == 12)
+#define SIZE_CLASSES \
+ /* index, lg_grp, lg_delta, ndelta, psz, bin, pgs, lg_delta_lookup */ \
+ SC( 0, 3, 3, 0, no, yes, 1, 3) \
+ \
+ SC( 1, 3, 3, 1, no, yes, 1, 3) \
+ SC( 2, 4, 4, 1, no, yes, 1, 4) \
+ SC( 3, 4, 4, 2, no, yes, 3, 4) \
+ SC( 4, 4, 4, 3, no, yes, 1, 4) \
+ \
+ SC( 5, 6, 4, 1, no, yes, 5, 4) \
+ SC( 6, 6, 4, 2, no, yes, 3, 4) \
+ SC( 7, 6, 4, 3, no, yes, 7, 4) \
+ SC( 8, 6, 4, 4, no, yes, 1, 4) \
+ \
+ SC( 9, 7, 5, 1, no, yes, 5, 5) \
+ SC( 10, 7, 5, 2, no, yes, 3, 5) \
+ SC( 11, 7, 5, 3, no, yes, 7, 5) \
+ SC( 12, 7, 5, 4, no, yes, 1, 5) \
+ \
+ SC( 13, 8, 6, 1, no, yes, 5, 6) \
+ SC( 14, 8, 6, 2, no, yes, 3, 6) \
+ SC( 15, 8, 6, 3, no, yes, 7, 6) \
+ SC( 16, 8, 6, 4, no, yes, 1, 6) \
+ \
+ SC( 17, 9, 7, 1, no, yes, 5, 7) \
+ SC( 18, 9, 7, 2, no, yes, 3, 7) \
+ SC( 19, 9, 7, 3, no, yes, 7, 7) \
+ SC( 20, 9, 7, 4, no, yes, 1, 7) \
+ \
+ SC( 21, 10, 8, 1, no, yes, 5, 8) \
+ SC( 22, 10, 8, 2, no, yes, 3, 8) \
+ SC( 23, 10, 8, 3, no, yes, 7, 8) \
+ SC( 24, 10, 8, 4, no, yes, 1, 8) \
+ \
+ SC( 25, 11, 9, 1, no, yes, 5, 9) \
+ SC( 26, 11, 9, 2, no, yes, 3, 9) \
+ SC( 27, 11, 9, 3, no, yes, 7, 9) \
+ SC( 28, 11, 9, 4, yes, yes, 1, 9) \
+ \
+ SC( 29, 12, 10, 1, no, yes, 5, no) \
+ SC( 30, 12, 10, 2, no, yes, 3, no) \
+ SC( 31, 12, 10, 3, no, yes, 7, no) \
+ SC( 32, 12, 10, 4, yes, yes, 2, no) \
+ \
+ SC( 33, 13, 11, 1, no, yes, 5, no) \
+ SC( 34, 13, 11, 2, yes, yes, 3, no) \
+ SC( 35, 13, 11, 3, no, yes, 7, no) \
+ SC( 36, 13, 11, 4, yes, no, 0, no) \
+ \
+ SC( 37, 14, 12, 1, yes, no, 0, no) \
+ SC( 38, 14, 12, 2, yes, no, 0, no) \
+ SC( 39, 14, 12, 3, yes, no, 0, no) \
+ SC( 40, 14, 12, 4, yes, no, 0, no) \
+ \
+ SC( 41, 15, 13, 1, yes, no, 0, no) \
+ SC( 42, 15, 13, 2, yes, no, 0, no) \
+ SC( 43, 15, 13, 3, yes, no, 0, no) \
+ SC( 44, 15, 13, 4, yes, no, 0, no) \
+ \
+ SC( 45, 16, 14, 1, yes, no, 0, no) \
+ SC( 46, 16, 14, 2, yes, no, 0, no) \
+ SC( 47, 16, 14, 3, yes, no, 0, no) \
+ SC( 48, 16, 14, 4, yes, no, 0, no) \
+ \
+ SC( 49, 17, 15, 1, yes, no, 0, no) \
+ SC( 50, 17, 15, 2, yes, no, 0, no) \
+ SC( 51, 17, 15, 3, yes, no, 0, no) \
+ SC( 52, 17, 15, 4, yes, no, 0, no) \
+ \
+ SC( 53, 18, 16, 1, yes, no, 0, no) \
+ SC( 54, 18, 16, 2, yes, no, 0, no) \
+ SC( 55, 18, 16, 3, yes, no, 0, no) \
+ SC( 56, 18, 16, 4, yes, no, 0, no) \
+ \
+ SC( 57, 19, 17, 1, yes, no, 0, no) \
+ SC( 58, 19, 17, 2, yes, no, 0, no) \
+ SC( 59, 19, 17, 3, yes, no, 0, no) \
+ SC( 60, 19, 17, 4, yes, no, 0, no) \
+ \
+ SC( 61, 20, 18, 1, yes, no, 0, no) \
+ SC( 62, 20, 18, 2, yes, no, 0, no) \
+ SC( 63, 20, 18, 3, yes, no, 0, no) \
+ SC( 64, 20, 18, 4, yes, no, 0, no) \
+ \
+ SC( 65, 21, 19, 1, yes, no, 0, no) \
+ SC( 66, 21, 19, 2, yes, no, 0, no) \
+ SC( 67, 21, 19, 3, yes, no, 0, no) \
+ SC( 68, 21, 19, 4, yes, no, 0, no) \
+ \
+ SC( 69, 22, 20, 1, yes, no, 0, no) \
+ SC( 70, 22, 20, 2, yes, no, 0, no) \
+ SC( 71, 22, 20, 3, yes, no, 0, no) \
+ SC( 72, 22, 20, 4, yes, no, 0, no) \
+ \
+ SC( 73, 23, 21, 1, yes, no, 0, no) \
+ SC( 74, 23, 21, 2, yes, no, 0, no) \
+ SC( 75, 23, 21, 3, yes, no, 0, no) \
+ SC( 76, 23, 21, 4, yes, no, 0, no) \
+ \
+ SC( 77, 24, 22, 1, yes, no, 0, no) \
+ SC( 78, 24, 22, 2, yes, no, 0, no) \
+ SC( 79, 24, 22, 3, yes, no, 0, no) \
+ SC( 80, 24, 22, 4, yes, no, 0, no) \
+ \
+ SC( 81, 25, 23, 1, yes, no, 0, no) \
+ SC( 82, 25, 23, 2, yes, no, 0, no) \
+ SC( 83, 25, 23, 3, yes, no, 0, no) \
+ SC( 84, 25, 23, 4, yes, no, 0, no) \
+ \
+ SC( 85, 26, 24, 1, yes, no, 0, no) \
+ SC( 86, 26, 24, 2, yes, no, 0, no) \
+ SC( 87, 26, 24, 3, yes, no, 0, no) \
+ SC( 88, 26, 24, 4, yes, no, 0, no) \
+ \
+ SC( 89, 27, 25, 1, yes, no, 0, no) \
+ SC( 90, 27, 25, 2, yes, no, 0, no) \
+ SC( 91, 27, 25, 3, yes, no, 0, no) \
+ SC( 92, 27, 25, 4, yes, no, 0, no) \
+ \
+ SC( 93, 28, 26, 1, yes, no, 0, no) \
+ SC( 94, 28, 26, 2, yes, no, 0, no) \
+ SC( 95, 28, 26, 3, yes, no, 0, no) \
+ SC( 96, 28, 26, 4, yes, no, 0, no) \
+ \
+ SC( 97, 29, 27, 1, yes, no, 0, no) \
+ SC( 98, 29, 27, 2, yes, no, 0, no) \
+ SC( 99, 29, 27, 3, yes, no, 0, no) \
+ SC(100, 29, 27, 4, yes, no, 0, no) \
+ \
+ SC(101, 30, 28, 1, yes, no, 0, no) \
+ SC(102, 30, 28, 2, yes, no, 0, no) \
+ SC(103, 30, 28, 3, yes, no, 0, no) \
+ SC(104, 30, 28, 4, yes, no, 0, no) \
+ \
+ SC(105, 31, 29, 1, yes, no, 0, no) \
+ SC(106, 31, 29, 2, yes, no, 0, no) \
+ SC(107, 31, 29, 3, yes, no, 0, no) \
+ SC(108, 31, 29, 4, yes, no, 0, no) \
+ \
+ SC(109, 32, 30, 1, yes, no, 0, no) \
+ SC(110, 32, 30, 2, yes, no, 0, no) \
+ SC(111, 32, 30, 3, yes, no, 0, no) \
+ SC(112, 32, 30, 4, yes, no, 0, no) \
+ \
+ SC(113, 33, 31, 1, yes, no, 0, no) \
+ SC(114, 33, 31, 2, yes, no, 0, no) \
+ SC(115, 33, 31, 3, yes, no, 0, no) \
+ SC(116, 33, 31, 4, yes, no, 0, no) \
+ \
+ SC(117, 34, 32, 1, yes, no, 0, no) \
+ SC(118, 34, 32, 2, yes, no, 0, no) \
+ SC(119, 34, 32, 3, yes, no, 0, no) \
+ SC(120, 34, 32, 4, yes, no, 0, no) \
+ \
+ SC(121, 35, 33, 1, yes, no, 0, no) \
+ SC(122, 35, 33, 2, yes, no, 0, no) \
+ SC(123, 35, 33, 3, yes, no, 0, no) \
+ SC(124, 35, 33, 4, yes, no, 0, no) \
+ \
+ SC(125, 36, 34, 1, yes, no, 0, no) \
+ SC(126, 36, 34, 2, yes, no, 0, no) \
+ SC(127, 36, 34, 3, yes, no, 0, no) \
+ SC(128, 36, 34, 4, yes, no, 0, no) \
+ \
+ SC(129, 37, 35, 1, yes, no, 0, no) \
+ SC(130, 37, 35, 2, yes, no, 0, no) \
+ SC(131, 37, 35, 3, yes, no, 0, no) \
+ SC(132, 37, 35, 4, yes, no, 0, no) \
+ \
+ SC(133, 38, 36, 1, yes, no, 0, no) \
+ SC(134, 38, 36, 2, yes, no, 0, no) \
+ SC(135, 38, 36, 3, yes, no, 0, no) \
+ SC(136, 38, 36, 4, yes, no, 0, no) \
+ \
+ SC(137, 39, 37, 1, yes, no, 0, no) \
+ SC(138, 39, 37, 2, yes, no, 0, no) \
+ SC(139, 39, 37, 3, yes, no, 0, no) \
+ SC(140, 39, 37, 4, yes, no, 0, no) \
+ \
+ SC(141, 40, 38, 1, yes, no, 0, no) \
+ SC(142, 40, 38, 2, yes, no, 0, no) \
+ SC(143, 40, 38, 3, yes, no, 0, no) \
+ SC(144, 40, 38, 4, yes, no, 0, no) \
+ \
+ SC(145, 41, 39, 1, yes, no, 0, no) \
+ SC(146, 41, 39, 2, yes, no, 0, no) \
+ SC(147, 41, 39, 3, yes, no, 0, no) \
+ SC(148, 41, 39, 4, yes, no, 0, no) \
+ \
+ SC(149, 42, 40, 1, yes, no, 0, no) \
+ SC(150, 42, 40, 2, yes, no, 0, no) \
+ SC(151, 42, 40, 3, yes, no, 0, no) \
+ SC(152, 42, 40, 4, yes, no, 0, no) \
+ \
+ SC(153, 43, 41, 1, yes, no, 0, no) \
+ SC(154, 43, 41, 2, yes, no, 0, no) \
+ SC(155, 43, 41, 3, yes, no, 0, no) \
+ SC(156, 43, 41, 4, yes, no, 0, no) \
+ \
+ SC(157, 44, 42, 1, yes, no, 0, no) \
+ SC(158, 44, 42, 2, yes, no, 0, no) \
+ SC(159, 44, 42, 3, yes, no, 0, no) \
+ SC(160, 44, 42, 4, yes, no, 0, no) \
+ \
+ SC(161, 45, 43, 1, yes, no, 0, no) \
+ SC(162, 45, 43, 2, yes, no, 0, no) \
+ SC(163, 45, 43, 3, yes, no, 0, no) \
+ SC(164, 45, 43, 4, yes, no, 0, no) \
+ \
+ SC(165, 46, 44, 1, yes, no, 0, no) \
+ SC(166, 46, 44, 2, yes, no, 0, no) \
+ SC(167, 46, 44, 3, yes, no, 0, no) \
+ SC(168, 46, 44, 4, yes, no, 0, no) \
+ \
+ SC(169, 47, 45, 1, yes, no, 0, no) \
+ SC(170, 47, 45, 2, yes, no, 0, no) \
+ SC(171, 47, 45, 3, yes, no, 0, no) \
+ SC(172, 47, 45, 4, yes, no, 0, no) \
+ \
+ SC(173, 48, 46, 1, yes, no, 0, no) \
+ SC(174, 48, 46, 2, yes, no, 0, no) \
+ SC(175, 48, 46, 3, yes, no, 0, no) \
+ SC(176, 48, 46, 4, yes, no, 0, no) \
+ \
+ SC(177, 49, 47, 1, yes, no, 0, no) \
+ SC(178, 49, 47, 2, yes, no, 0, no) \
+ SC(179, 49, 47, 3, yes, no, 0, no) \
+ SC(180, 49, 47, 4, yes, no, 0, no) \
+ \
+ SC(181, 50, 48, 1, yes, no, 0, no) \
+ SC(182, 50, 48, 2, yes, no, 0, no) \
+ SC(183, 50, 48, 3, yes, no, 0, no) \
+ SC(184, 50, 48, 4, yes, no, 0, no) \
+ \
+ SC(185, 51, 49, 1, yes, no, 0, no) \
+ SC(186, 51, 49, 2, yes, no, 0, no) \
+ SC(187, 51, 49, 3, yes, no, 0, no) \
+ SC(188, 51, 49, 4, yes, no, 0, no) \
+ \
+ SC(189, 52, 50, 1, yes, no, 0, no) \
+ SC(190, 52, 50, 2, yes, no, 0, no) \
+ SC(191, 52, 50, 3, yes, no, 0, no) \
+ SC(192, 52, 50, 4, yes, no, 0, no) \
+ \
+ SC(193, 53, 51, 1, yes, no, 0, no) \
+ SC(194, 53, 51, 2, yes, no, 0, no) \
+ SC(195, 53, 51, 3, yes, no, 0, no) \
+ SC(196, 53, 51, 4, yes, no, 0, no) \
+ \
+ SC(197, 54, 52, 1, yes, no, 0, no) \
+ SC(198, 54, 52, 2, yes, no, 0, no) \
+ SC(199, 54, 52, 3, yes, no, 0, no) \
+ SC(200, 54, 52, 4, yes, no, 0, no) \
+ \
+ SC(201, 55, 53, 1, yes, no, 0, no) \
+ SC(202, 55, 53, 2, yes, no, 0, no) \
+ SC(203, 55, 53, 3, yes, no, 0, no) \
+ SC(204, 55, 53, 4, yes, no, 0, no) \
+ \
+ SC(205, 56, 54, 1, yes, no, 0, no) \
+ SC(206, 56, 54, 2, yes, no, 0, no) \
+ SC(207, 56, 54, 3, yes, no, 0, no) \
+ SC(208, 56, 54, 4, yes, no, 0, no) \
+ \
+ SC(209, 57, 55, 1, yes, no, 0, no) \
+ SC(210, 57, 55, 2, yes, no, 0, no) \
+ SC(211, 57, 55, 3, yes, no, 0, no) \
+ SC(212, 57, 55, 4, yes, no, 0, no) \
+ \
+ SC(213, 58, 56, 1, yes, no, 0, no) \
+ SC(214, 58, 56, 2, yes, no, 0, no) \
+ SC(215, 58, 56, 3, yes, no, 0, no) \
+ SC(216, 58, 56, 4, yes, no, 0, no) \
+ \
+ SC(217, 59, 57, 1, yes, no, 0, no) \
+ SC(218, 59, 57, 2, yes, no, 0, no) \
+ SC(219, 59, 57, 3, yes, no, 0, no) \
+ SC(220, 59, 57, 4, yes, no, 0, no) \
+ \
+ SC(221, 60, 58, 1, yes, no, 0, no) \
+ SC(222, 60, 58, 2, yes, no, 0, no) \
+ SC(223, 60, 58, 3, yes, no, 0, no) \
+ SC(224, 60, 58, 4, yes, no, 0, no) \
+ \
+ SC(225, 61, 59, 1, yes, no, 0, no) \
+ SC(226, 61, 59, 2, yes, no, 0, no) \
+ SC(227, 61, 59, 3, yes, no, 0, no) \
+ SC(228, 61, 59, 4, yes, no, 0, no) \
+ \
+ SC(229, 62, 60, 1, yes, no, 0, no) \
+ SC(230, 62, 60, 2, yes, no, 0, no) \
+ SC(231, 62, 60, 3, yes, no, 0, no) \
+
+#define SIZE_CLASSES_DEFINED
+#define NTBINS 1
+#define NLBINS 29
+#define NBINS 36
+#define NSIZES 232
+#define LG_CEIL_NSIZES 8
+#define NPSIZES 199
+#define LG_TINY_MAXCLASS 3
+#define LOOKUP_MAXCLASS ((((size_t)1) << 11) + (((size_t)4) << 9))
+#define SMALL_MAXCLASS ((((size_t)1) << 13) + (((size_t)3) << 11))
+#define LG_LARGE_MINCLASS 14
+#define LARGE_MINCLASS (ZU(1) << LG_LARGE_MINCLASS)
+#define LARGE_MAXCLASS ((((size_t)1) << 62) + (((size_t)3) << 60))
+#endif
+
+#if (LG_SIZEOF_PTR == 3 && LG_TINY_MIN == 4 && LG_QUANTUM == 4 && LG_PAGE == 12)
+#define SIZE_CLASSES \
+ /* index, lg_grp, lg_delta, ndelta, psz, bin, pgs, lg_delta_lookup */ \
+ SC( 0, 4, 4, 0, no, yes, 1, 4) \
+ SC( 1, 4, 4, 1, no, yes, 1, 4) \
+ SC( 2, 4, 4, 2, no, yes, 3, 4) \
+ SC( 3, 4, 4, 3, no, yes, 1, 4) \
+ \
+ SC( 4, 6, 4, 1, no, yes, 5, 4) \
+ SC( 5, 6, 4, 2, no, yes, 3, 4) \
+ SC( 6, 6, 4, 3, no, yes, 7, 4) \
+ SC( 7, 6, 4, 4, no, yes, 1, 4) \
+ \
+ SC( 8, 7, 5, 1, no, yes, 5, 5) \
+ SC( 9, 7, 5, 2, no, yes, 3, 5) \
+ SC( 10, 7, 5, 3, no, yes, 7, 5) \
+ SC( 11, 7, 5, 4, no, yes, 1, 5) \
+ \
+ SC( 12, 8, 6, 1, no, yes, 5, 6) \
+ SC( 13, 8, 6, 2, no, yes, 3, 6) \
+ SC( 14, 8, 6, 3, no, yes, 7, 6) \
+ SC( 15, 8, 6, 4, no, yes, 1, 6) \
+ \
+ SC( 16, 9, 7, 1, no, yes, 5, 7) \
+ SC( 17, 9, 7, 2, no, yes, 3, 7) \
+ SC( 18, 9, 7, 3, no, yes, 7, 7) \
+ SC( 19, 9, 7, 4, no, yes, 1, 7) \
+ \
+ SC( 20, 10, 8, 1, no, yes, 5, 8) \
+ SC( 21, 10, 8, 2, no, yes, 3, 8) \
+ SC( 22, 10, 8, 3, no, yes, 7, 8) \
+ SC( 23, 10, 8, 4, no, yes, 1, 8) \
+ \
+ SC( 24, 11, 9, 1, no, yes, 5, 9) \
+ SC( 25, 11, 9, 2, no, yes, 3, 9) \
+ SC( 26, 11, 9, 3, no, yes, 7, 9) \
+ SC( 27, 11, 9, 4, yes, yes, 1, 9) \
+ \
+ SC( 28, 12, 10, 1, no, yes, 5, no) \
+ SC( 29, 12, 10, 2, no, yes, 3, no) \
+ SC( 30, 12, 10, 3, no, yes, 7, no) \
+ SC( 31, 12, 10, 4, yes, yes, 2, no) \
+ \
+ SC( 32, 13, 11, 1, no, yes, 5, no) \
+ SC( 33, 13, 11, 2, yes, yes, 3, no) \
+ SC( 34, 13, 11, 3, no, yes, 7, no) \
+ SC( 35, 13, 11, 4, yes, no, 0, no) \
+ \
+ SC( 36, 14, 12, 1, yes, no, 0, no) \
+ SC( 37, 14, 12, 2, yes, no, 0, no) \
+ SC( 38, 14, 12, 3, yes, no, 0, no) \
+ SC( 39, 14, 12, 4, yes, no, 0, no) \
+ \
+ SC( 40, 15, 13, 1, yes, no, 0, no) \
+ SC( 41, 15, 13, 2, yes, no, 0, no) \
+ SC( 42, 15, 13, 3, yes, no, 0, no) \
+ SC( 43, 15, 13, 4, yes, no, 0, no) \
+ \
+ SC( 44, 16, 14, 1, yes, no, 0, no) \
+ SC( 45, 16, 14, 2, yes, no, 0, no) \
+ SC( 46, 16, 14, 3, yes, no, 0, no) \
+ SC( 47, 16, 14, 4, yes, no, 0, no) \
+ \
+ SC( 48, 17, 15, 1, yes, no, 0, no) \
+ SC( 49, 17, 15, 2, yes, no, 0, no) \
+ SC( 50, 17, 15, 3, yes, no, 0, no) \
+ SC( 51, 17, 15, 4, yes, no, 0, no) \
+ \
+ SC( 52, 18, 16, 1, yes, no, 0, no) \
+ SC( 53, 18, 16, 2, yes, no, 0, no) \
+ SC( 54, 18, 16, 3, yes, no, 0, no) \
+ SC( 55, 18, 16, 4, yes, no, 0, no) \
+ \
+ SC( 56, 19, 17, 1, yes, no, 0, no) \
+ SC( 57, 19, 17, 2, yes, no, 0, no) \
+ SC( 58, 19, 17, 3, yes, no, 0, no) \
+ SC( 59, 19, 17, 4, yes, no, 0, no) \
+ \
+ SC( 60, 20, 18, 1, yes, no, 0, no) \
+ SC( 61, 20, 18, 2, yes, no, 0, no) \
+ SC( 62, 20, 18, 3, yes, no, 0, no) \
+ SC( 63, 20, 18, 4, yes, no, 0, no) \
+ \
+ SC( 64, 21, 19, 1, yes, no, 0, no) \
+ SC( 65, 21, 19, 2, yes, no, 0, no) \
+ SC( 66, 21, 19, 3, yes, no, 0, no) \
+ SC( 67, 21, 19, 4, yes, no, 0, no) \
+ \
+ SC( 68, 22, 20, 1, yes, no, 0, no) \
+ SC( 69, 22, 20, 2, yes, no, 0, no) \
+ SC( 70, 22, 20, 3, yes, no, 0, no) \
+ SC( 71, 22, 20, 4, yes, no, 0, no) \
+ \
+ SC( 72, 23, 21, 1, yes, no, 0, no) \
+ SC( 73, 23, 21, 2, yes, no, 0, no) \
+ SC( 74, 23, 21, 3, yes, no, 0, no) \
+ SC( 75, 23, 21, 4, yes, no, 0, no) \
+ \
+ SC( 76, 24, 22, 1, yes, no, 0, no) \
+ SC( 77, 24, 22, 2, yes, no, 0, no) \
+ SC( 78, 24, 22, 3, yes, no, 0, no) \
+ SC( 79, 24, 22, 4, yes, no, 0, no) \
+ \
+ SC( 80, 25, 23, 1, yes, no, 0, no) \
+ SC( 81, 25, 23, 2, yes, no, 0, no) \
+ SC( 82, 25, 23, 3, yes, no, 0, no) \
+ SC( 83, 25, 23, 4, yes, no, 0, no) \
+ \
+ SC( 84, 26, 24, 1, yes, no, 0, no) \
+ SC( 85, 26, 24, 2, yes, no, 0, no) \
+ SC( 86, 26, 24, 3, yes, no, 0, no) \
+ SC( 87, 26, 24, 4, yes, no, 0, no) \
+ \
+ SC( 88, 27, 25, 1, yes, no, 0, no) \
+ SC( 89, 27, 25, 2, yes, no, 0, no) \
+ SC( 90, 27, 25, 3, yes, no, 0, no) \
+ SC( 91, 27, 25, 4, yes, no, 0, no) \
+ \
+ SC( 92, 28, 26, 1, yes, no, 0, no) \
+ SC( 93, 28, 26, 2, yes, no, 0, no) \
+ SC( 94, 28, 26, 3, yes, no, 0, no) \
+ SC( 95, 28, 26, 4, yes, no, 0, no) \
+ \
+ SC( 96, 29, 27, 1, yes, no, 0, no) \
+ SC( 97, 29, 27, 2, yes, no, 0, no) \
+ SC( 98, 29, 27, 3, yes, no, 0, no) \
+ SC( 99, 29, 27, 4, yes, no, 0, no) \
+ \
+ SC(100, 30, 28, 1, yes, no, 0, no) \
+ SC(101, 30, 28, 2, yes, no, 0, no) \
+ SC(102, 30, 28, 3, yes, no, 0, no) \
+ SC(103, 30, 28, 4, yes, no, 0, no) \
+ \
+ SC(104, 31, 29, 1, yes, no, 0, no) \
+ SC(105, 31, 29, 2, yes, no, 0, no) \
+ SC(106, 31, 29, 3, yes, no, 0, no) \
+ SC(107, 31, 29, 4, yes, no, 0, no) \
+ \
+ SC(108, 32, 30, 1, yes, no, 0, no) \
+ SC(109, 32, 30, 2, yes, no, 0, no) \
+ SC(110, 32, 30, 3, yes, no, 0, no) \
+ SC(111, 32, 30, 4, yes, no, 0, no) \
+ \
+ SC(112, 33, 31, 1, yes, no, 0, no) \
+ SC(113, 33, 31, 2, yes, no, 0, no) \
+ SC(114, 33, 31, 3, yes, no, 0, no) \
+ SC(115, 33, 31, 4, yes, no, 0, no) \
+ \
+ SC(116, 34, 32, 1, yes, no, 0, no) \
+ SC(117, 34, 32, 2, yes, no, 0, no) \
+ SC(118, 34, 32, 3, yes, no, 0, no) \
+ SC(119, 34, 32, 4, yes, no, 0, no) \
+ \
+ SC(120, 35, 33, 1, yes, no, 0, no) \
+ SC(121, 35, 33, 2, yes, no, 0, no) \
+ SC(122, 35, 33, 3, yes, no, 0, no) \
+ SC(123, 35, 33, 4, yes, no, 0, no) \
+ \
+ SC(124, 36, 34, 1, yes, no, 0, no) \
+ SC(125, 36, 34, 2, yes, no, 0, no) \
+ SC(126, 36, 34, 3, yes, no, 0, no) \
+ SC(127, 36, 34, 4, yes, no, 0, no) \
+ \
+ SC(128, 37, 35, 1, yes, no, 0, no) \
+ SC(129, 37, 35, 2, yes, no, 0, no) \
+ SC(130, 37, 35, 3, yes, no, 0, no) \
+ SC(131, 37, 35, 4, yes, no, 0, no) \
+ \
+ SC(132, 38, 36, 1, yes, no, 0, no) \
+ SC(133, 38, 36, 2, yes, no, 0, no) \
+ SC(134, 38, 36, 3, yes, no, 0, no) \
+ SC(135, 38, 36, 4, yes, no, 0, no) \
+ \
+ SC(136, 39, 37, 1, yes, no, 0, no) \
+ SC(137, 39, 37, 2, yes, no, 0, no) \
+ SC(138, 39, 37, 3, yes, no, 0, no) \
+ SC(139, 39, 37, 4, yes, no, 0, no) \
+ \
+ SC(140, 40, 38, 1, yes, no, 0, no) \
+ SC(141, 40, 38, 2, yes, no, 0, no) \
+ SC(142, 40, 38, 3, yes, no, 0, no) \
+ SC(143, 40, 38, 4, yes, no, 0, no) \
+ \
+ SC(144, 41, 39, 1, yes, no, 0, no) \
+ SC(145, 41, 39, 2, yes, no, 0, no) \
+ SC(146, 41, 39, 3, yes, no, 0, no) \
+ SC(147, 41, 39, 4, yes, no, 0, no) \
+ \
+ SC(148, 42, 40, 1, yes, no, 0, no) \
+ SC(149, 42, 40, 2, yes, no, 0, no) \
+ SC(150, 42, 40, 3, yes, no, 0, no) \
+ SC(151, 42, 40, 4, yes, no, 0, no) \
+ \
+ SC(152, 43, 41, 1, yes, no, 0, no) \
+ SC(153, 43, 41, 2, yes, no, 0, no) \
+ SC(154, 43, 41, 3, yes, no, 0, no) \
+ SC(155, 43, 41, 4, yes, no, 0, no) \
+ \
+ SC(156, 44, 42, 1, yes, no, 0, no) \
+ SC(157, 44, 42, 2, yes, no, 0, no) \
+ SC(158, 44, 42, 3, yes, no, 0, no) \
+ SC(159, 44, 42, 4, yes, no, 0, no) \
+ \
+ SC(160, 45, 43, 1, yes, no, 0, no) \
+ SC(161, 45, 43, 2, yes, no, 0, no) \
+ SC(162, 45, 43, 3, yes, no, 0, no) \
+ SC(163, 45, 43, 4, yes, no, 0, no) \
+ \
+ SC(164, 46, 44, 1, yes, no, 0, no) \
+ SC(165, 46, 44, 2, yes, no, 0, no) \
+ SC(166, 46, 44, 3, yes, no, 0, no) \
+ SC(167, 46, 44, 4, yes, no, 0, no) \
+ \
+ SC(168, 47, 45, 1, yes, no, 0, no) \
+ SC(169, 47, 45, 2, yes, no, 0, no) \
+ SC(170, 47, 45, 3, yes, no, 0, no) \
+ SC(171, 47, 45, 4, yes, no, 0, no) \
+ \
+ SC(172, 48, 46, 1, yes, no, 0, no) \
+ SC(173, 48, 46, 2, yes, no, 0, no) \
+ SC(174, 48, 46, 3, yes, no, 0, no) \
+ SC(175, 48, 46, 4, yes, no, 0, no) \
+ \
+ SC(176, 49, 47, 1, yes, no, 0, no) \
+ SC(177, 49, 47, 2, yes, no, 0, no) \
+ SC(178, 49, 47, 3, yes, no, 0, no) \
+ SC(179, 49, 47, 4, yes, no, 0, no) \
+ \
+ SC(180, 50, 48, 1, yes, no, 0, no) \
+ SC(181, 50, 48, 2, yes, no, 0, no) \
+ SC(182, 50, 48, 3, yes, no, 0, no) \
+ SC(183, 50, 48, 4, yes, no, 0, no) \
+ \
+ SC(184, 51, 49, 1, yes, no, 0, no) \
+ SC(185, 51, 49, 2, yes, no, 0, no) \
+ SC(186, 51, 49, 3, yes, no, 0, no) \
+ SC(187, 51, 49, 4, yes, no, 0, no) \
+ \
+ SC(188, 52, 50, 1, yes, no, 0, no) \
+ SC(189, 52, 50, 2, yes, no, 0, no) \
+ SC(190, 52, 50, 3, yes, no, 0, no) \
+ SC(191, 52, 50, 4, yes, no, 0, no) \
+ \
+ SC(192, 53, 51, 1, yes, no, 0, no) \
+ SC(193, 53, 51, 2, yes, no, 0, no) \
+ SC(194, 53, 51, 3, yes, no, 0, no) \
+ SC(195, 53, 51, 4, yes, no, 0, no) \
+ \
+ SC(196, 54, 52, 1, yes, no, 0, no) \
+ SC(197, 54, 52, 2, yes, no, 0, no) \
+ SC(198, 54, 52, 3, yes, no, 0, no) \
+ SC(199, 54, 52, 4, yes, no, 0, no) \
+ \
+ SC(200, 55, 53, 1, yes, no, 0, no) \
+ SC(201, 55, 53, 2, yes, no, 0, no) \
+ SC(202, 55, 53, 3, yes, no, 0, no) \
+ SC(203, 55, 53, 4, yes, no, 0, no) \
+ \
+ SC(204, 56, 54, 1, yes, no, 0, no) \
+ SC(205, 56, 54, 2, yes, no, 0, no) \
+ SC(206, 56, 54, 3, yes, no, 0, no) \
+ SC(207, 56, 54, 4, yes, no, 0, no) \
+ \
+ SC(208, 57, 55, 1, yes, no, 0, no) \
+ SC(209, 57, 55, 2, yes, no, 0, no) \
+ SC(210, 57, 55, 3, yes, no, 0, no) \
+ SC(211, 57, 55, 4, yes, no, 0, no) \
+ \
+ SC(212, 58, 56, 1, yes, no, 0, no) \
+ SC(213, 58, 56, 2, yes, no, 0, no) \
+ SC(214, 58, 56, 3, yes, no, 0, no) \
+ SC(215, 58, 56, 4, yes, no, 0, no) \
+ \
+ SC(216, 59, 57, 1, yes, no, 0, no) \
+ SC(217, 59, 57, 2, yes, no, 0, no) \
+ SC(218, 59, 57, 3, yes, no, 0, no) \
+ SC(219, 59, 57, 4, yes, no, 0, no) \
+ \
+ SC(220, 60, 58, 1, yes, no, 0, no) \
+ SC(221, 60, 58, 2, yes, no, 0, no) \
+ SC(222, 60, 58, 3, yes, no, 0, no) \
+ SC(223, 60, 58, 4, yes, no, 0, no) \
+ \
+ SC(224, 61, 59, 1, yes, no, 0, no) \
+ SC(225, 61, 59, 2, yes, no, 0, no) \
+ SC(226, 61, 59, 3, yes, no, 0, no) \
+ SC(227, 61, 59, 4, yes, no, 0, no) \
+ \
+ SC(228, 62, 60, 1, yes, no, 0, no) \
+ SC(229, 62, 60, 2, yes, no, 0, no) \
+ SC(230, 62, 60, 3, yes, no, 0, no) \
+
+#define SIZE_CLASSES_DEFINED
+#define NTBINS 0
+#define NLBINS 28
+#define NBINS 35
+#define NSIZES 231
+#define LG_CEIL_NSIZES 8
+#define NPSIZES 199
+#define LG_TINY_MAXCLASS "NA"
+#define LOOKUP_MAXCLASS ((((size_t)1) << 11) + (((size_t)4) << 9))
+#define SMALL_MAXCLASS ((((size_t)1) << 13) + (((size_t)3) << 11))
+#define LG_LARGE_MINCLASS 14
+#define LARGE_MINCLASS (ZU(1) << LG_LARGE_MINCLASS)
+#define LARGE_MAXCLASS ((((size_t)1) << 62) + (((size_t)3) << 60))
+#endif
+
+#ifndef SIZE_CLASSES_DEFINED
+# error "No size class definitions match configuration"
+#endif
+#undef SIZE_CLASSES_DEFINED
+/*
+ * The size2index_tab lookup table uses uint8_t to encode each bin index, so we
+ * cannot support more than 256 small size classes.
+ */
+#if (NBINS > 256)
+# error "Too many small size classes"
+#endif
+
+#endif /* JEMALLOC_INTERNAL_SIZE_CLASSES_H */
diff --git a/include/jemalloc/jemalloc.h b/include/jemalloc/jemalloc.h
new file mode 100644
index 00000000..c96dfc54
--- /dev/null
+++ b/include/jemalloc/jemalloc.h
@@ -0,0 +1,425 @@
+#ifndef JEMALLOC_H_
+#define JEMALLOC_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Defined if __attribute__((...)) syntax is supported. */
+#define JEMALLOC_HAVE_ATTR
+
+/* Defined if alloc_size attribute is supported. */
+#define JEMALLOC_HAVE_ATTR_ALLOC_SIZE
+
+/* Defined if format(gnu_printf, ...) attribute is supported. */
+/* #undef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF */
+
+/* Defined if format(printf, ...) attribute is supported. */
+#define JEMALLOC_HAVE_ATTR_FORMAT_PRINTF
+
+/*
+ * Define overrides for non-standard allocator-related functions if they are
+ * present on the system.
+ */
+#define JEMALLOC_OVERRIDE_MEMALIGN
+#define JEMALLOC_OVERRIDE_VALLOC
+
+/*
+ * At least Linux omits the "const" in:
+ *
+ * size_t malloc_usable_size(const void *ptr);
+ *
+ * Match the operating system's prototype.
+ */
+#define JEMALLOC_USABLE_SIZE_CONST const
+
+/*
+ * If defined, specify throw() for the public function prototypes when compiling
+ * with C++. The only justification for this is to match the prototypes that
+ * glibc defines.
+ */
+/* #undef JEMALLOC_USE_CXX_THROW */
+
+#ifdef _MSC_VER
+# ifdef _WIN64
+# define LG_SIZEOF_PTR_WIN 3
+# else
+# define LG_SIZEOF_PTR_WIN 2
+# endif
+#endif
+
+/* sizeof(void *) == 2^LG_SIZEOF_PTR. */
+#if defined(__LP64__)
+#define LG_SIZEOF_PTR 3
+#else
+#define LG_SIZEOF_PTR 2
+#endif
+
+/*
+ * Name mangling for public symbols is controlled by --with-mangling and
+ * --with-jemalloc-prefix. With default settings the je_ prefix is stripped by
+ * these macro definitions.
+ */
+#ifndef JEMALLOC_NO_RENAME
+# define je_aligned_alloc je_aligned_alloc
+# define je_calloc je_calloc
+# define je_dallocx je_dallocx
+# define je_free je_free
+# define je_mallctl je_mallctl
+# define je_mallctlbymib je_mallctlbymib
+# define je_mallctlnametomib je_mallctlnametomib
+# define je_malloc je_malloc
+# define je_malloc_conf je_malloc_conf
+# define je_malloc_message je_malloc_message
+# define je_malloc_stats_print je_malloc_stats_print
+# define je_malloc_usable_size je_malloc_usable_size
+# define je_mallocx je_mallocx
+# define je_nallocx je_nallocx
+# define je_posix_memalign je_posix_memalign
+# define je_rallocx je_rallocx
+# define je_realloc je_realloc
+# define je_sallocx je_sallocx
+# define je_sdallocx je_sdallocx
+# define je_xallocx je_xallocx
+# define je_memalign je_memalign
+# define je_valloc je_valloc
+#endif
+
+#include <stdlib.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <limits.h>
+#include <strings.h>
+
+#define JEMALLOC_VERSION "5.1.0-0-g61efbda7098de6fe64c362d309824864308c36d4"
+#define JEMALLOC_VERSION_MAJOR 5
+#define JEMALLOC_VERSION_MINOR 1
+#define JEMALLOC_VERSION_BUGFIX 0
+#define JEMALLOC_VERSION_NREV 0
+#define JEMALLOC_VERSION_GID "61efbda7098de6fe64c362d309824864308c36d4"
+
+#define MALLOCX_LG_ALIGN(la) ((int)(la))
+#if LG_SIZEOF_PTR == 2
+# define MALLOCX_ALIGN(a) ((int)(ffs((int)(a))-1))
+#else
+# define MALLOCX_ALIGN(a) \
+ ((int)(((size_t)(a) < (size_t)INT_MAX) ? ffs((int)(a))-1 : \
+ ffs((int)(((size_t)(a))>>32))+31))
+#endif
+#define MALLOCX_ZERO ((int)0x40)
+/*
+ * Bias tcache index bits so that 0 encodes "automatic tcache management", and 1
+ * encodes MALLOCX_TCACHE_NONE.
+ */
+#define MALLOCX_TCACHE(tc) ((int)(((tc)+2) << 8))
+#define MALLOCX_TCACHE_NONE MALLOCX_TCACHE(-1)
+/*
+ * Bias arena index bits so that 0 encodes "use an automatically chosen arena".
+ */
+#define MALLOCX_ARENA(a) ((((int)(a))+1) << 20)
+
+/*
+ * Use as arena index in "arena.<i>.{purge,decay,dss}" and
+ * "stats.arenas.<i>.*" mallctl interfaces to select all arenas. This
+ * definition is intentionally specified in raw decimal format to support
+ * cpp-based string concatenation, e.g.
+ *
+ * #define STRINGIFY_HELPER(x) #x
+ * #define STRINGIFY(x) STRINGIFY_HELPER(x)
+ *
+ * mallctl("arena." STRINGIFY(MALLCTL_ARENAS_ALL) ".purge", NULL, NULL, NULL,
+ * 0);
+ */
+#define MALLCTL_ARENAS_ALL 4096
+/*
+ * Use as arena index in "stats.arenas.<i>.*" mallctl interfaces to select
+ * destroyed arenas.
+ */
+#define MALLCTL_ARENAS_DESTROYED 4097
+
+#if defined(__cplusplus) && defined(JEMALLOC_USE_CXX_THROW)
+# define JEMALLOC_CXX_THROW throw()
+#else
+# define JEMALLOC_CXX_THROW
+#endif
+
+#if defined(_MSC_VER)
+# define JEMALLOC_ATTR(s)
+# define JEMALLOC_ALIGNED(s) __declspec(align(s))
+# define JEMALLOC_ALLOC_SIZE(s)
+# define JEMALLOC_ALLOC_SIZE2(s1, s2)
+# ifndef JEMALLOC_EXPORT
+# ifdef DLLEXPORT
+# define JEMALLOC_EXPORT __declspec(dllexport)
+# else
+# define JEMALLOC_EXPORT __declspec(dllimport)
+# endif
+# endif
+# define JEMALLOC_FORMAT_PRINTF(s, i)
+# define JEMALLOC_NOINLINE __declspec(noinline)
+# ifdef __cplusplus
+# define JEMALLOC_NOTHROW __declspec(nothrow)
+# else
+# define JEMALLOC_NOTHROW
+# endif
+# define JEMALLOC_SECTION(s) __declspec(allocate(s))
+# define JEMALLOC_RESTRICT_RETURN __declspec(restrict)
+# if _MSC_VER >= 1900 && !defined(__EDG__)
+# define JEMALLOC_ALLOCATOR __declspec(allocator)
+# else
+# define JEMALLOC_ALLOCATOR
+# endif
+#elif defined(JEMALLOC_HAVE_ATTR)
+# define JEMALLOC_ATTR(s) __attribute__((s))
+# define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s))
+# ifdef JEMALLOC_HAVE_ATTR_ALLOC_SIZE
+# define JEMALLOC_ALLOC_SIZE(s) JEMALLOC_ATTR(alloc_size(s))
+# define JEMALLOC_ALLOC_SIZE2(s1, s2) JEMALLOC_ATTR(alloc_size(s1, s2))
+# else
+# define JEMALLOC_ALLOC_SIZE(s)
+# define JEMALLOC_ALLOC_SIZE2(s1, s2)
+# endif
+# ifndef JEMALLOC_EXPORT
+# define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default"))
+# endif
+# ifdef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF
+# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(gnu_printf, s, i))
+# elif defined(JEMALLOC_HAVE_ATTR_FORMAT_PRINTF)
+# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(printf, s, i))
+# else
+# define JEMALLOC_FORMAT_PRINTF(s, i)
+# endif
+# define JEMALLOC_NOINLINE JEMALLOC_ATTR(noinline)
+# define JEMALLOC_NOTHROW JEMALLOC_ATTR(nothrow)
+# define JEMALLOC_SECTION(s) JEMALLOC_ATTR(section(s))
+# define JEMALLOC_RESTRICT_RETURN
+# define JEMALLOC_ALLOCATOR
+#else
+# define JEMALLOC_ATTR(s)
+# define JEMALLOC_ALIGNED(s)
+# define JEMALLOC_ALLOC_SIZE(s)
+# define JEMALLOC_ALLOC_SIZE2(s1, s2)
+# define JEMALLOC_EXPORT
+# define JEMALLOC_FORMAT_PRINTF(s, i)
+# define JEMALLOC_NOINLINE
+# define JEMALLOC_NOTHROW
+# define JEMALLOC_SECTION(s)
+# define JEMALLOC_RESTRICT_RETURN
+# define JEMALLOC_ALLOCATOR
+#endif
+
+/*
+ * 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.h).
+ */
+extern JEMALLOC_EXPORT const char *je_malloc_conf;
+extern JEMALLOC_EXPORT void (*je_malloc_message)(void *cbopaque,
+ const char *s);
+
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_malloc(size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1);
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_calloc(size_t num, size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE2(1, 2);
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_posix_memalign(void **memptr,
+ size_t alignment, size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(nonnull(1));
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_aligned_alloc(size_t alignment,
+ size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc)
+ JEMALLOC_ALLOC_SIZE(2);
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_realloc(void *ptr, size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ALLOC_SIZE(2);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_free(void *ptr)
+ JEMALLOC_CXX_THROW;
+
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_mallocx(size_t size, int flags)
+ JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1);
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_rallocx(void *ptr, size_t size,
+ int flags) JEMALLOC_ALLOC_SIZE(2);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_xallocx(void *ptr, size_t size,
+ size_t extra, int flags);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_sallocx(const void *ptr,
+ int flags) JEMALLOC_ATTR(pure);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_dallocx(void *ptr, int flags);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_sdallocx(void *ptr, size_t size,
+ int flags);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_nallocx(size_t size, int flags)
+ JEMALLOC_ATTR(pure);
+
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctl(const char *name,
+ void *oldp, size_t *oldlenp, void *newp, size_t newlen);
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlnametomib(const char *name,
+ size_t *mibp, size_t *miblenp);
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlbymib(const size_t *mib,
+ size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_malloc_stats_print(
+ void (*write_cb)(void *, const char *), void *je_cbopaque,
+ const char *opts);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_malloc_usable_size(
+ JEMALLOC_USABLE_SIZE_CONST void *ptr) JEMALLOC_CXX_THROW;
+
+#ifdef JEMALLOC_OVERRIDE_MEMALIGN
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_memalign(size_t alignment, size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc);
+#endif
+
+#ifdef JEMALLOC_OVERRIDE_VALLOC
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_valloc(size_t size) JEMALLOC_CXX_THROW
+ JEMALLOC_ATTR(malloc);
+#endif
+
+typedef struct extent_hooks_s extent_hooks_t;
+
+/*
+ * void *
+ * extent_alloc(extent_hooks_t *extent_hooks, void *new_addr, size_t size,
+ * size_t alignment, bool *zero, bool *commit, unsigned arena_ind);
+ */
+typedef void *(extent_alloc_t)(extent_hooks_t *, void *, size_t, size_t, bool *,
+ bool *, unsigned);
+
+/*
+ * bool
+ * extent_dalloc(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * bool committed, unsigned arena_ind);
+ */
+typedef bool (extent_dalloc_t)(extent_hooks_t *, void *, size_t, bool,
+ unsigned);
+
+/*
+ * void
+ * extent_destroy(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * bool committed, unsigned arena_ind);
+ */
+typedef void (extent_destroy_t)(extent_hooks_t *, void *, size_t, bool,
+ unsigned);
+
+/*
+ * bool
+ * extent_commit(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * size_t offset, size_t length, unsigned arena_ind);
+ */
+typedef bool (extent_commit_t)(extent_hooks_t *, void *, size_t, size_t, size_t,
+ unsigned);
+
+/*
+ * bool
+ * extent_decommit(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * size_t offset, size_t length, unsigned arena_ind);
+ */
+typedef bool (extent_decommit_t)(extent_hooks_t *, void *, size_t, size_t,
+ size_t, unsigned);
+
+/*
+ * bool
+ * extent_purge(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * size_t offset, size_t length, unsigned arena_ind);
+ */
+typedef bool (extent_purge_t)(extent_hooks_t *, void *, size_t, size_t, size_t,
+ unsigned);
+
+/*
+ * bool
+ * extent_split(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * size_t size_a, size_t size_b, bool committed, unsigned arena_ind);
+ */
+typedef bool (extent_split_t)(extent_hooks_t *, void *, size_t, size_t, size_t,
+ bool, unsigned);
+
+/*
+ * bool
+ * extent_merge(extent_hooks_t *extent_hooks, void *addr_a, size_t size_a,
+ * void *addr_b, size_t size_b, bool committed, unsigned arena_ind);
+ */
+typedef bool (extent_merge_t)(extent_hooks_t *, void *, size_t, void *, size_t,
+ bool, unsigned);
+
+struct extent_hooks_s {
+ extent_alloc_t *alloc;
+ extent_dalloc_t *dalloc;
+ extent_destroy_t *destroy;
+ extent_commit_t *commit;
+ extent_decommit_t *decommit;
+ extent_purge_t *purge_lazy;
+ extent_purge_t *purge_forced;
+ extent_split_t *split;
+ extent_merge_t *merge;
+};
+
+/*
+ * By default application code must explicitly refer to mangled symbol names,
+ * so that it is possible to use jemalloc in conjunction with another allocator
+ * in the same application. Define JEMALLOC_MANGLE in order to cause automatic
+ * name mangling that matches the API prefixing that happened as a result of
+ * --with-mangling and/or --with-jemalloc-prefix configuration settings.
+ */
+#ifdef JEMALLOC_MANGLE
+# ifndef JEMALLOC_NO_DEMANGLE
+# define JEMALLOC_NO_DEMANGLE
+# endif
+# define aligned_alloc je_aligned_alloc
+# define calloc je_calloc
+# define dallocx je_dallocx
+# define free je_free
+# define mallctl je_mallctl
+# define mallctlbymib je_mallctlbymib
+# define mallctlnametomib je_mallctlnametomib
+# define malloc je_malloc
+# define malloc_conf je_malloc_conf
+# define malloc_message je_malloc_message
+# define malloc_stats_print je_malloc_stats_print
+# define malloc_usable_size je_malloc_usable_size
+# define mallocx je_mallocx
+# define nallocx je_nallocx
+# define posix_memalign je_posix_memalign
+# define rallocx je_rallocx
+# define realloc je_realloc
+# define sallocx je_sallocx
+# define sdallocx je_sdallocx
+# define xallocx je_xallocx
+# define memalign je_memalign
+# define valloc je_valloc
+#endif
+
+/*
+ * The je_* macros can be used as stable alternative names for the
+ * public jemalloc API if JEMALLOC_NO_DEMANGLE is defined. This is primarily
+ * meant for use in jemalloc itself, but it can be used by application code to
+ * provide isolation from the name mangling specified via --with-mangling
+ * and/or --with-jemalloc-prefix.
+ */
+#ifndef JEMALLOC_NO_DEMANGLE
+# undef je_aligned_alloc
+# undef je_calloc
+# undef je_dallocx
+# undef je_free
+# undef je_mallctl
+# undef je_mallctlbymib
+# undef je_mallctlnametomib
+# undef je_malloc
+# undef je_malloc_conf
+# undef je_malloc_message
+# undef je_malloc_stats_print
+# undef je_malloc_usable_size
+# undef je_mallocx
+# undef je_nallocx
+# undef je_posix_memalign
+# undef je_rallocx
+# undef je_realloc
+# undef je_sallocx
+# undef je_sdallocx
+# undef je_xallocx
+# undef je_memalign
+# undef je_valloc
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* JEMALLOC_H_ */
diff --git a/include/jemalloc/jemalloc_defs.h b/include/jemalloc/jemalloc_defs.h
new file mode 100644
index 00000000..e6e81f4c
--- /dev/null
+++ b/include/jemalloc/jemalloc_defs.h
@@ -0,0 +1,50 @@
+/* include/jemalloc/jemalloc_defs.h. Generated from jemalloc_defs.h.in by configure. */
+/* Defined if __attribute__((...)) syntax is supported. */
+#define JEMALLOC_HAVE_ATTR
+
+/* Defined if alloc_size attribute is supported. */
+#define JEMALLOC_HAVE_ATTR_ALLOC_SIZE
+
+/* Defined if format(gnu_printf, ...) attribute is supported. */
+/* #undef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF */
+
+/* Defined if format(printf, ...) attribute is supported. */
+#define JEMALLOC_HAVE_ATTR_FORMAT_PRINTF
+
+/*
+ * Define overrides for non-standard allocator-related functions if they are
+ * present on the system.
+ */
+#define JEMALLOC_OVERRIDE_MEMALIGN
+#define JEMALLOC_OVERRIDE_VALLOC
+
+/*
+ * At least Linux omits the "const" in:
+ *
+ * size_t malloc_usable_size(const void *ptr);
+ *
+ * Match the operating system's prototype.
+ */
+#define JEMALLOC_USABLE_SIZE_CONST const
+
+/*
+ * If defined, specify throw() for the public function prototypes when compiling
+ * with C++. The only justification for this is to match the prototypes that
+ * glibc defines.
+ */
+/* #undef JEMALLOC_USE_CXX_THROW */
+
+#ifdef _MSC_VER
+# ifdef _WIN64
+# define LG_SIZEOF_PTR_WIN 3
+# else
+# define LG_SIZEOF_PTR_WIN 2
+# endif
+#endif
+
+/* sizeof(void *) == 2^LG_SIZEOF_PTR. */
+#if defined(__LP64__)
+#define LG_SIZEOF_PTR 3
+#else
+#define LG_SIZEOF_PTR 2
+#endif
diff --git a/include/jemalloc/jemalloc_macros.h b/include/jemalloc/jemalloc_macros.h
new file mode 100644
index 00000000..64699575
--- /dev/null
+++ b/include/jemalloc/jemalloc_macros.h
@@ -0,0 +1,122 @@
+#include <stdlib.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <limits.h>
+#include <strings.h>
+
+#define JEMALLOC_VERSION "5.1.0-0-g61efbda7098de6fe64c362d309824864308c36d4"
+#define JEMALLOC_VERSION_MAJOR 5
+#define JEMALLOC_VERSION_MINOR 1
+#define JEMALLOC_VERSION_BUGFIX 0
+#define JEMALLOC_VERSION_NREV 0
+#define JEMALLOC_VERSION_GID "61efbda7098de6fe64c362d309824864308c36d4"
+
+#define MALLOCX_LG_ALIGN(la) ((int)(la))
+#if LG_SIZEOF_PTR == 2
+# define MALLOCX_ALIGN(a) ((int)(ffs((int)(a))-1))
+#else
+# define MALLOCX_ALIGN(a) \
+ ((int)(((size_t)(a) < (size_t)INT_MAX) ? ffs((int)(a))-1 : \
+ ffs((int)(((size_t)(a))>>32))+31))
+#endif
+#define MALLOCX_ZERO ((int)0x40)
+/*
+ * Bias tcache index bits so that 0 encodes "automatic tcache management", and 1
+ * encodes MALLOCX_TCACHE_NONE.
+ */
+#define MALLOCX_TCACHE(tc) ((int)(((tc)+2) << 8))
+#define MALLOCX_TCACHE_NONE MALLOCX_TCACHE(-1)
+/*
+ * Bias arena index bits so that 0 encodes "use an automatically chosen arena".
+ */
+#define MALLOCX_ARENA(a) ((((int)(a))+1) << 20)
+
+/*
+ * Use as arena index in "arena.<i>.{purge,decay,dss}" and
+ * "stats.arenas.<i>.*" mallctl interfaces to select all arenas. This
+ * definition is intentionally specified in raw decimal format to support
+ * cpp-based string concatenation, e.g.
+ *
+ * #define STRINGIFY_HELPER(x) #x
+ * #define STRINGIFY(x) STRINGIFY_HELPER(x)
+ *
+ * mallctl("arena." STRINGIFY(MALLCTL_ARENAS_ALL) ".purge", NULL, NULL, NULL,
+ * 0);
+ */
+#define MALLCTL_ARENAS_ALL 4096
+/*
+ * Use as arena index in "stats.arenas.<i>.*" mallctl interfaces to select
+ * destroyed arenas.
+ */
+#define MALLCTL_ARENAS_DESTROYED 4097
+
+#if defined(__cplusplus) && defined(JEMALLOC_USE_CXX_THROW)
+# define JEMALLOC_CXX_THROW throw()
+#else
+# define JEMALLOC_CXX_THROW
+#endif
+
+#if defined(_MSC_VER)
+# define JEMALLOC_ATTR(s)
+# define JEMALLOC_ALIGNED(s) __declspec(align(s))
+# define JEMALLOC_ALLOC_SIZE(s)
+# define JEMALLOC_ALLOC_SIZE2(s1, s2)
+# ifndef JEMALLOC_EXPORT
+# ifdef DLLEXPORT
+# define JEMALLOC_EXPORT __declspec(dllexport)
+# else
+# define JEMALLOC_EXPORT __declspec(dllimport)
+# endif
+# endif
+# define JEMALLOC_FORMAT_PRINTF(s, i)
+# define JEMALLOC_NOINLINE __declspec(noinline)
+# ifdef __cplusplus
+# define JEMALLOC_NOTHROW __declspec(nothrow)
+# else
+# define JEMALLOC_NOTHROW
+# endif
+# define JEMALLOC_SECTION(s) __declspec(allocate(s))
+# define JEMALLOC_RESTRICT_RETURN __declspec(restrict)
+# if _MSC_VER >= 1900 && !defined(__EDG__)
+# define JEMALLOC_ALLOCATOR __declspec(allocator)
+# else
+# define JEMALLOC_ALLOCATOR
+# endif
+#elif defined(JEMALLOC_HAVE_ATTR)
+# define JEMALLOC_ATTR(s) __attribute__((s))
+# define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s))
+# ifdef JEMALLOC_HAVE_ATTR_ALLOC_SIZE
+# define JEMALLOC_ALLOC_SIZE(s) JEMALLOC_ATTR(alloc_size(s))
+# define JEMALLOC_ALLOC_SIZE2(s1, s2) JEMALLOC_ATTR(alloc_size(s1, s2))
+# else
+# define JEMALLOC_ALLOC_SIZE(s)
+# define JEMALLOC_ALLOC_SIZE2(s1, s2)
+# endif
+# ifndef JEMALLOC_EXPORT
+# define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default"))
+# endif
+# ifdef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF
+# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(gnu_printf, s, i))
+# elif defined(JEMALLOC_HAVE_ATTR_FORMAT_PRINTF)
+# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(printf, s, i))
+# else
+# define JEMALLOC_FORMAT_PRINTF(s, i)
+# endif
+# define JEMALLOC_NOINLINE JEMALLOC_ATTR(noinline)
+# define JEMALLOC_NOTHROW JEMALLOC_ATTR(nothrow)
+# define JEMALLOC_SECTION(s) JEMALLOC_ATTR(section(s))
+# define JEMALLOC_RESTRICT_RETURN
+# define JEMALLOC_ALLOCATOR
+#else
+# define JEMALLOC_ATTR(s)
+# define JEMALLOC_ALIGNED(s)
+# define JEMALLOC_ALLOC_SIZE(s)
+# define JEMALLOC_ALLOC_SIZE2(s1, s2)
+# define JEMALLOC_EXPORT
+# define JEMALLOC_FORMAT_PRINTF(s, i)
+# define JEMALLOC_NOINLINE
+# define JEMALLOC_NOTHROW
+# define JEMALLOC_SECTION(s)
+# define JEMALLOC_RESTRICT_RETURN
+# define JEMALLOC_ALLOCATOR
+#endif
diff --git a/include/jemalloc/jemalloc_mangle.h b/include/jemalloc/jemalloc_mangle.h
new file mode 100644
index 00000000..ac2376f9
--- /dev/null
+++ b/include/jemalloc/jemalloc_mangle.h
@@ -0,0 +1,66 @@
+/*
+ * By default application code must explicitly refer to mangled symbol names,
+ * so that it is possible to use jemalloc in conjunction with another allocator
+ * in the same application. Define JEMALLOC_MANGLE in order to cause automatic
+ * name mangling that matches the API prefixing that happened as a result of
+ * --with-mangling and/or --with-jemalloc-prefix configuration settings.
+ */
+#ifdef JEMALLOC_MANGLE
+# ifndef JEMALLOC_NO_DEMANGLE
+# define JEMALLOC_NO_DEMANGLE
+# endif
+# define aligned_alloc je_aligned_alloc
+# define calloc je_calloc
+# define dallocx je_dallocx
+# define free je_free
+# define mallctl je_mallctl
+# define mallctlbymib je_mallctlbymib
+# define mallctlnametomib je_mallctlnametomib
+# define malloc je_malloc
+# define malloc_conf je_malloc_conf
+# define malloc_message je_malloc_message
+# define malloc_stats_print je_malloc_stats_print
+# define malloc_usable_size je_malloc_usable_size
+# define mallocx je_mallocx
+# define nallocx je_nallocx
+# define posix_memalign je_posix_memalign
+# define rallocx je_rallocx
+# define realloc je_realloc
+# define sallocx je_sallocx
+# define sdallocx je_sdallocx
+# define xallocx je_xallocx
+# define memalign je_memalign
+# define valloc je_valloc
+#endif
+
+/*
+ * The je_* macros can be used as stable alternative names for the
+ * public jemalloc API if JEMALLOC_NO_DEMANGLE is defined. This is primarily
+ * meant for use in jemalloc itself, but it can be used by application code to
+ * provide isolation from the name mangling specified via --with-mangling
+ * and/or --with-jemalloc-prefix.
+ */
+#ifndef JEMALLOC_NO_DEMANGLE
+# undef je_aligned_alloc
+# undef je_calloc
+# undef je_dallocx
+# undef je_free
+# undef je_mallctl
+# undef je_mallctlbymib
+# undef je_mallctlnametomib
+# undef je_malloc
+# undef je_malloc_conf
+# undef je_malloc_message
+# undef je_malloc_stats_print
+# undef je_malloc_usable_size
+# undef je_mallocx
+# undef je_nallocx
+# undef je_posix_memalign
+# undef je_rallocx
+# undef je_realloc
+# undef je_sallocx
+# undef je_sdallocx
+# undef je_xallocx
+# undef je_memalign
+# undef je_valloc
+#endif
diff --git a/include/jemalloc/jemalloc_mangle_jet.h b/include/jemalloc/jemalloc_mangle_jet.h
new file mode 100644
index 00000000..596bf860
--- /dev/null
+++ b/include/jemalloc/jemalloc_mangle_jet.h
@@ -0,0 +1,66 @@
+/*
+ * By default application code must explicitly refer to mangled symbol names,
+ * so that it is possible to use jemalloc in conjunction with another allocator
+ * in the same application. Define JEMALLOC_MANGLE in order to cause automatic
+ * name mangling that matches the API prefixing that happened as a result of
+ * --with-mangling and/or --with-jemalloc-prefix configuration settings.
+ */
+#ifdef JEMALLOC_MANGLE
+# ifndef JEMALLOC_NO_DEMANGLE
+# define JEMALLOC_NO_DEMANGLE
+# endif
+# define aligned_alloc jet_aligned_alloc
+# define calloc jet_calloc
+# define dallocx jet_dallocx
+# define free jet_free
+# define mallctl jet_mallctl
+# define mallctlbymib jet_mallctlbymib
+# define mallctlnametomib jet_mallctlnametomib
+# define malloc jet_malloc
+# define malloc_conf jet_malloc_conf
+# define malloc_message jet_malloc_message
+# define malloc_stats_print jet_malloc_stats_print
+# define malloc_usable_size jet_malloc_usable_size
+# define mallocx jet_mallocx
+# define nallocx jet_nallocx
+# define posix_memalign jet_posix_memalign
+# define rallocx jet_rallocx
+# define realloc jet_realloc
+# define sallocx jet_sallocx
+# define sdallocx jet_sdallocx
+# define xallocx jet_xallocx
+# define memalign jet_memalign
+# define valloc jet_valloc
+#endif
+
+/*
+ * The jet_* macros can be used as stable alternative names for the
+ * public jemalloc API if JEMALLOC_NO_DEMANGLE is defined. This is primarily
+ * meant for use in jemalloc itself, but it can be used by application code to
+ * provide isolation from the name mangling specified via --with-mangling
+ * and/or --with-jemalloc-prefix.
+ */
+#ifndef JEMALLOC_NO_DEMANGLE
+# undef jet_aligned_alloc
+# undef jet_calloc
+# undef jet_dallocx
+# undef jet_free
+# undef jet_mallctl
+# undef jet_mallctlbymib
+# undef jet_mallctlnametomib
+# undef jet_malloc
+# undef jet_malloc_conf
+# undef jet_malloc_message
+# undef jet_malloc_stats_print
+# undef jet_malloc_usable_size
+# undef jet_mallocx
+# undef jet_nallocx
+# undef jet_posix_memalign
+# undef jet_rallocx
+# undef jet_realloc
+# undef jet_sallocx
+# undef jet_sdallocx
+# undef jet_xallocx
+# undef jet_memalign
+# undef jet_valloc
+#endif
diff --git a/include/jemalloc/jemalloc_protos.h b/include/jemalloc/jemalloc_protos.h
new file mode 100644
index 00000000..ff025e30
--- /dev/null
+++ b/include/jemalloc/jemalloc_protos.h
@@ -0,0 +1,66 @@
+/*
+ * 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.h).
+ */
+extern JEMALLOC_EXPORT const char *je_malloc_conf;
+extern JEMALLOC_EXPORT void (*je_malloc_message)(void *cbopaque,
+ const char *s);
+
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_malloc(size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1);
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_calloc(size_t num, size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE2(1, 2);
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_posix_memalign(void **memptr,
+ size_t alignment, size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(nonnull(1));
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_aligned_alloc(size_t alignment,
+ size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc)
+ JEMALLOC_ALLOC_SIZE(2);
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_realloc(void *ptr, size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ALLOC_SIZE(2);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_free(void *ptr)
+ JEMALLOC_CXX_THROW;
+
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_mallocx(size_t size, int flags)
+ JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1);
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_rallocx(void *ptr, size_t size,
+ int flags) JEMALLOC_ALLOC_SIZE(2);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_xallocx(void *ptr, size_t size,
+ size_t extra, int flags);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_sallocx(const void *ptr,
+ int flags) JEMALLOC_ATTR(pure);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_dallocx(void *ptr, int flags);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_sdallocx(void *ptr, size_t size,
+ int flags);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_nallocx(size_t size, int flags)
+ JEMALLOC_ATTR(pure);
+
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctl(const char *name,
+ void *oldp, size_t *oldlenp, void *newp, size_t newlen);
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlnametomib(const char *name,
+ size_t *mibp, size_t *miblenp);
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlbymib(const size_t *mib,
+ size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_malloc_stats_print(
+ void (*write_cb)(void *, const char *), void *je_cbopaque,
+ const char *opts);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_malloc_usable_size(
+ JEMALLOC_USABLE_SIZE_CONST void *ptr) JEMALLOC_CXX_THROW;
+
+#ifdef JEMALLOC_OVERRIDE_MEMALIGN
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_memalign(size_t alignment, size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc);
+#endif
+
+#ifdef JEMALLOC_OVERRIDE_VALLOC
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *je_valloc(size_t size) JEMALLOC_CXX_THROW
+ JEMALLOC_ATTR(malloc);
+#endif
diff --git a/include/jemalloc/jemalloc_protos_jet.h b/include/jemalloc/jemalloc_protos_jet.h
new file mode 100644
index 00000000..f71efef0
--- /dev/null
+++ b/include/jemalloc/jemalloc_protos_jet.h
@@ -0,0 +1,66 @@
+/*
+ * The jet_ 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 *jet_malloc_conf;
+extern JEMALLOC_EXPORT void (*jet_malloc_message)(void *cbopaque,
+ const char *s);
+
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *jet_malloc(size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1);
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *jet_calloc(size_t num, size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE2(1, 2);
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW jet_posix_memalign(void **memptr,
+ size_t alignment, size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(nonnull(1));
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *jet_aligned_alloc(size_t alignment,
+ size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc)
+ JEMALLOC_ALLOC_SIZE(2);
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *jet_realloc(void *ptr, size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ALLOC_SIZE(2);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW jet_free(void *ptr)
+ JEMALLOC_CXX_THROW;
+
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *jet_mallocx(size_t size, int flags)
+ JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1);
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *jet_rallocx(void *ptr, size_t size,
+ int flags) JEMALLOC_ALLOC_SIZE(2);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW jet_xallocx(void *ptr, size_t size,
+ size_t extra, int flags);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW jet_sallocx(const void *ptr,
+ int flags) JEMALLOC_ATTR(pure);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW jet_dallocx(void *ptr, int flags);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW jet_sdallocx(void *ptr, size_t size,
+ int flags);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW jet_nallocx(size_t size, int flags)
+ JEMALLOC_ATTR(pure);
+
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW jet_mallctl(const char *name,
+ void *oldp, size_t *oldlenp, void *newp, size_t newlen);
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW jet_mallctlnametomib(const char *name,
+ size_t *mibp, size_t *miblenp);
+JEMALLOC_EXPORT int JEMALLOC_NOTHROW jet_mallctlbymib(const size_t *mib,
+ size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen);
+JEMALLOC_EXPORT void JEMALLOC_NOTHROW jet_malloc_stats_print(
+ void (*write_cb)(void *, const char *), void *jet_cbopaque,
+ const char *opts);
+JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW jet_malloc_usable_size(
+ JEMALLOC_USABLE_SIZE_CONST void *ptr) JEMALLOC_CXX_THROW;
+
+#ifdef JEMALLOC_OVERRIDE_MEMALIGN
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *jet_memalign(size_t alignment, size_t size)
+ JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc);
+#endif
+
+#ifdef JEMALLOC_OVERRIDE_VALLOC
+JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN
+ void JEMALLOC_NOTHROW *jet_valloc(size_t size) JEMALLOC_CXX_THROW
+ JEMALLOC_ATTR(malloc);
+#endif
diff --git a/include/jemalloc/jemalloc_rename.h b/include/jemalloc/jemalloc_rename.h
new file mode 100644
index 00000000..28ebd37e
--- /dev/null
+++ b/include/jemalloc/jemalloc_rename.h
@@ -0,0 +1,29 @@
+/*
+ * Name mangling for public symbols is controlled by --with-mangling and
+ * --with-jemalloc-prefix. With default settings the je_ prefix is stripped by
+ * these macro definitions.
+ */
+#ifndef JEMALLOC_NO_RENAME
+# define je_aligned_alloc je_aligned_alloc
+# define je_calloc je_calloc
+# define je_dallocx je_dallocx
+# define je_free je_free
+# define je_mallctl je_mallctl
+# define je_mallctlbymib je_mallctlbymib
+# define je_mallctlnametomib je_mallctlnametomib
+# define je_malloc je_malloc
+# define je_malloc_conf je_malloc_conf
+# define je_malloc_message je_malloc_message
+# define je_malloc_stats_print je_malloc_stats_print
+# define je_malloc_usable_size je_malloc_usable_size
+# define je_mallocx je_mallocx
+# define je_nallocx je_nallocx
+# define je_posix_memalign je_posix_memalign
+# define je_rallocx je_rallocx
+# define je_realloc je_realloc
+# define je_sallocx je_sallocx
+# define je_sdallocx je_sdallocx
+# define je_xallocx je_xallocx
+# define je_memalign je_memalign
+# define je_valloc je_valloc
+#endif
diff --git a/include/jemalloc/jemalloc_typedefs.h b/include/jemalloc/jemalloc_typedefs.h
new file mode 100644
index 00000000..1a588743
--- /dev/null
+++ b/include/jemalloc/jemalloc_typedefs.h
@@ -0,0 +1,77 @@
+typedef struct extent_hooks_s extent_hooks_t;
+
+/*
+ * void *
+ * extent_alloc(extent_hooks_t *extent_hooks, void *new_addr, size_t size,
+ * size_t alignment, bool *zero, bool *commit, unsigned arena_ind);
+ */
+typedef void *(extent_alloc_t)(extent_hooks_t *, void *, size_t, size_t, bool *,
+ bool *, unsigned);
+
+/*
+ * bool
+ * extent_dalloc(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * bool committed, unsigned arena_ind);
+ */
+typedef bool (extent_dalloc_t)(extent_hooks_t *, void *, size_t, bool,
+ unsigned);
+
+/*
+ * void
+ * extent_destroy(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * bool committed, unsigned arena_ind);
+ */
+typedef void (extent_destroy_t)(extent_hooks_t *, void *, size_t, bool,
+ unsigned);
+
+/*
+ * bool
+ * extent_commit(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * size_t offset, size_t length, unsigned arena_ind);
+ */
+typedef bool (extent_commit_t)(extent_hooks_t *, void *, size_t, size_t, size_t,
+ unsigned);
+
+/*
+ * bool
+ * extent_decommit(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * size_t offset, size_t length, unsigned arena_ind);
+ */
+typedef bool (extent_decommit_t)(extent_hooks_t *, void *, size_t, size_t,
+ size_t, unsigned);
+
+/*
+ * bool
+ * extent_purge(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * size_t offset, size_t length, unsigned arena_ind);
+ */
+typedef bool (extent_purge_t)(extent_hooks_t *, void *, size_t, size_t, size_t,
+ unsigned);
+
+/*
+ * bool
+ * extent_split(extent_hooks_t *extent_hooks, void *addr, size_t size,
+ * size_t size_a, size_t size_b, bool committed, unsigned arena_ind);
+ */
+typedef bool (extent_split_t)(extent_hooks_t *, void *, size_t, size_t, size_t,
+ bool, unsigned);
+
+/*
+ * bool
+ * extent_merge(extent_hooks_t *extent_hooks, void *addr_a, size_t size_a,
+ * void *addr_b, size_t size_b, bool committed, unsigned arena_ind);
+ */
+typedef bool (extent_merge_t)(extent_hooks_t *, void *, size_t, void *, size_t,
+ bool, unsigned);
+
+struct extent_hooks_s {
+ extent_alloc_t *alloc;
+ extent_dalloc_t *dalloc;
+ extent_destroy_t *destroy;
+ extent_commit_t *commit;
+ extent_decommit_t *decommit;
+ extent_purge_t *purge_lazy;
+ extent_purge_t *purge_forced;
+ extent_split_t *split;
+ extent_merge_t *merge;
+};