10void Yap_initdlmalloc(
void);
11void Yap_RestoreDLMalloc(
void);
85#define MORECORE yapsbrk
86#define MORECORE_CONTIGUOUS 0
87#define USE_DL_PREFIX 1
104#if defined(__STDC__) || defined(_cplusplus)
117#if (__STD_C || defined(WIN32))
127#include <sys/types.h>
138#ifndef LACKS_UNISTD_H
179#define DEBUG_DLMALLOC 1
184#define assert(x) ((void)0)
194#define CHUNK_SIZE_T unsigned long
203#define PTR_UINT unsigned long
238#ifndef INTERNAL_SIZE_T
239#define INTERNAL_SIZE_T size_t
243#define SIZE_SZ (sizeof(INTERNAL_SIZE_T))
256#ifndef MALLOC_ALIGNMENT
257#define MALLOC_ALIGNMENT (2 * SIZE_SZ)
261#define MALLOC_ALIGN_MASK (MALLOC_ALIGNMENT - 1)
291#define TRIM_FASTBINS 0
312#define cALLOc Yap_dlcalloc
313#define fREe Yap_dlfree
314#define cFREe Yap_dlcfree
315#define mALLOc Yap_dlmalloc
316#define mEMALIGn Yap_dlmemalign
317#define rEALLOc Yap_dlrealloc
318#define vALLOc Yap_dlvalloc
319#define pVALLOc Yap_dlpvalloc
320#define mALLINFo Yap_dlmallinfo
321#define mALLOPt Yap_dlmallopt
322#define mTRIm Yap_dlmalloc_trim
323#define mSTATs Yap_dlmalloc_stats
324#define mUSABLe Yap_dlmalloc_usable_size
325#define iCALLOc Yap_dlindependent_calloc
326#define iCOMALLOc Yap_dlindependent_comalloc
336#ifndef MALLOC_FAILURE_ACTION
338#define MALLOC_FAILURE_ACTION \
342#define MALLOC_FAILURE_ACTION
352#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__)
354extern Void_t* sbrk(ptrdiff_t);
356extern Void_t* sbrk();
379#ifndef MORECORE_FAILURE
380#define MORECORE_FAILURE (-1)
393#ifndef MORECORE_CONTIGUOUS
394#define MORECORE_CONTIGUOUS 1
419#define malloc_getpagesize Yap_page_size
421#ifndef malloc_getpagesize
423#ifndef LACKS_UNISTD_H
428# ifndef _SC_PAGE_SIZE
429# define _SC_PAGE_SIZE _SC_PAGESIZE
434# define malloc_getpagesize sysconf(_SC_PAGE_SIZE)
436# if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE)
437 extern size_t getpagesize();
438# define malloc_getpagesize getpagesize()
441# define malloc_getpagesize getpagesize()
443# ifndef LACKS_SYS_PARAM_H
444# include <sys/param.h>
447# define malloc_getpagesize EXEC_PAGESIZE
451# define malloc_getpagesize NBPG
453# define malloc_getpagesize (NBPG * CLSIZE)
457# define malloc_getpagesize NBPC
460# define malloc_getpagesize PAGESIZE
462# define malloc_getpagesize (4096)
499#if HAVE_MALLOC_H && !defined(_WIN32) && !defined(__NetBSD_Version__)
500#define HAVE_USR_INCLUDE_MALLOC_H 1
503#ifdef HAVE_USR_INCLUDE_MALLOC_H
549Void_t* mALLOc(
size_t);
577Void_t* cALLOc(
size_t,
size_t);
610Void_t* rEALLOc(Void_t*,
size_t);
628Void_t* mEMALIGn(
size_t,
size_t);
639Void_t* vALLOc(
size_t);
668int mALLOPt(
int,
int);
698struct mallinfo mALLINFo(void);
700struct mallinfo mALLINFo();
756Void_t** iCALLOc(
size_t,
size_t, Void_t**);
821Void_t** iCOMALLOc(
size_t,
size_t*, Void_t**);
833Void_t* pVALLOc(
size_t);
898size_t mUSABLe(Void_t*);
963#ifndef DEFAULT_MXFAST
964#define DEFAULT_MXFAST 64
1028#define M_TRIM_THRESHOLD -1
1030#ifndef DEFAULT_TRIM_THRESHOLD
1031#define DEFAULT_TRIM_THRESHOLD (256 * 1024)
1063#ifndef DEFAULT_TOP_PAD
1064#define DEFAULT_TOP_PAD (0)
1082struct malloc_chunk {
1084 INTERNAL_SIZE_T prev_size;
1085 INTERNAL_SIZE_T size;
1087 struct malloc_chunk* fd;
1088 struct malloc_chunk* bk;
1092typedef struct malloc_chunk* mchunkptr;
1187#define chunk2mem(p) ((Void_t*)((char*)(p) + 2*SIZE_SZ))
1188#define mem2chunk(mem) ((mchunkptr)((char*)(mem) - 2*SIZE_SZ))
1191#define MIN_CHUNK_SIZE (sizeof(struct malloc_chunk))
1196 (CHUNK_SIZE_T)(((MIN_CHUNK_SIZE+MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK))
1200#define aligned_OK(m) (((PTR_UINT)((m)) & (MALLOC_ALIGN_MASK)) == 0)
1209#define REQUEST_OUT_OF_RANGE(req) \
1210 ((CHUNK_SIZE_T)(req) >= \
1211 (CHUNK_SIZE_T)(INTERNAL_SIZE_T)(-2 * MINSIZE))
1215#define request2size(req) \
1216 (((req) + SIZE_SZ + MALLOC_ALIGN_MASK < MINSIZE) ? \
1218 ((req) + SIZE_SZ + MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK)
1222#define checked_request2size(req, sz) \
1223 if (REQUEST_OUT_OF_RANGE(req)) { \
1224 MALLOC_FAILURE_ACTION; \
1227 (sz) = request2size(req);
1235#define PREV_INUSE 0x1
1238#define prev_inuse(p) ((p)->size & PREV_INUSE)
1242#define IS_MMAPPED 0x2
1245#define chunk_is_mmapped(p) ((p)->size & IS_MMAPPED)
1255#define SIZE_BITS (PREV_INUSE|IS_MMAPPED)
1258#define chunksize(p) ((p)->size & ~(SIZE_BITS))
1262#define next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->size & ~PREV_INUSE) ))
1265#define prev_chunk(p) ((mchunkptr)( ((char*)(p)) - ((p)->prev_size) ))
1268#define chunk_at_offset(p, s) ((mchunkptr)(((char*)(p)) + (s)))
1272((((mchunkptr)(((char*)(p))+((p)->size & ~PREV_INUSE)))->size) & PREV_INUSE)
1275#define set_inuse(p)\
1276((mchunkptr)(((char*)(p)) + ((p)->size & ~PREV_INUSE)))->size |= PREV_INUSE
1278#define clear_inuse(p)\
1279((mchunkptr)(((char*)(p)) + ((p)->size & ~PREV_INUSE)))->size &= ~(PREV_INUSE)
1283#define inuse_bit_at_offset(p, s)\
1284 (((mchunkptr)(((char*)(p)) + (s)))->size & PREV_INUSE)
1286#define set_inuse_bit_at_offset(p, s)\
1287 (((mchunkptr)(((char*)(p)) + (s)))->size |= PREV_INUSE)
1289#define clear_inuse_bit_at_offset(p, s)\
1290 (((mchunkptr)(((char*)(p)) + (s)))->size &= ~(PREV_INUSE))
1294#define set_head_size(p, s) ((p)->size = (((p)->size & PREV_INUSE) | (s)))
1297#define set_head(p, s) ((p)->size = (s))
1300#define set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_size = (s))
1354typedef struct malloc_chunk* mbinptr;
1357#define bin_at(m, i) ((mbinptr)((char*)&((m)->bins[(i)<<1]) - (SIZE_SZ<<1)))
1360#define next_bin(b) ((mbinptr)((char*)(b) + (sizeof(mchunkptr)<<1)))
1363#define first(b) ((b)->fd)
1364#define last(b) ((b)->bk)
1367#define dl_unlink(P, BK, FD) { \
1393#define NSMALLBINS 32
1394#define SMALLBIN_WIDTH 8
1395#define MIN_LARGE_SIZE 256
1397#define in_smallbin_range(sz) \
1398 ((CHUNK_SIZE_T)(sz) < (CHUNK_SIZE_T)MIN_LARGE_SIZE)
1400#define smallbin_index(sz) (((unsigned)(sz)) >> 3)
1418#define BINMAPSHIFT 5
1419#define BITSPERMAP (1U << BINMAPSHIFT)
1420#define BINMAPSIZE (NBINS / BITSPERMAP)
1439typedef struct malloc_chunk* mfastbinptr;
1442#define MAX_FAST_SIZE 80
1445#define fastbin_index(sz) ((((unsigned int)(sz)) >> 3) - 2)
1447#define NFASTBINS (fastbin_index(request2size(MAX_FAST_SIZE))+1)
1449struct malloc_state {
1452 INTERNAL_SIZE_T max_fast;
1455 mfastbinptr fastbins[NFASTBINS];
1461 mchunkptr last_remainder;
1464 mchunkptr bins[NBINS * 2];
1467 unsigned int binmap[BINMAPSIZE+1];
1470 CHUNK_SIZE_T trim_threshold;
1471 INTERNAL_SIZE_T top_pad;
1472 INTERNAL_SIZE_T mmap_threshold;
1475 unsigned int pagesize;
1478 unsigned int morecore_properties;
1481 INTERNAL_SIZE_T mmapped_mem;
1482 INTERNAL_SIZE_T sbrked_mem;
1483 INTERNAL_SIZE_T max_sbrked_mem;
1484 INTERNAL_SIZE_T max_mmapped_mem;
1485 INTERNAL_SIZE_T max_total_mem;
1488typedef struct malloc_state *mstate;