|
| #define | LACKS_UNISTD_H |
| |
| #define | LACKS_FCNTL_H |
| |
| #define | LACKS_SYS_PARAM_H |
| |
| #define | stderr 0 |
| |
| #define | HAVE_MORECORE 1 |
| |
| #define | MORECORE xe_request_page |
| |
| #define | MORECORE_CONTIGUOUS 1 |
| |
| #define | MORECORE_CANNOT_TRIM 0 |
| |
| #define | USE_DL_PREFIX |
| |
| #define | LACKS_TIME_H |
| |
| #define | LACKS_SCHED_H |
| |
| #define | USE_LOCKS 0 |
| |
| #define | INITIAL_LOCK(lock) (*(lock) = 0) |
| |
| #define | DESTROY_LOCK(lock) (0) |
| |
| #define | ACQUIRE_LOCK(lock) xe_malloc_lock(lock) |
| |
| #define | RELEASE_LOCK(lock) (__atomic_store_n((lock), 0, __ATOMIC_RELEASE), 0) |
| |
| #define | TRY_LOCK(lock) (!__atomic_exchange_n((lock), 1, __ATOMIC_ACQUIRE)) |
| |
| #define | MALLOC_FAILURE_ACTION |
| |
| #define | CALL_MMAP(size) xe_request_page(size) |
| |
| #define | CALL_MUNMAP(ptr, size) xe_free_page(ptr, size) |
| |
| #define | HAVE_MMAP 1 |
| |
| #define | HAVE_MREMAP 0 |
| |
| #define | NO_MALLINFO 1 |
| |
| #define | NO_MALLOC_STATS 1 |
| |
| #define | DEFAULT_GRANULARITY 64 |
| |
| #define | DLMALLOC_VERSION 20806 |
| |
| #define | DLMALLOC_EXPORT extern |
| |
| #define | MORECORE_CONTIGUOUS 0 |
| |
| #define | HAVE_MMAP 0 |
| |
| #define | HAVE_MREMAP 0 |
| |
| #define | LACKS_UNISTD_H 1 |
| |
| #define | LACKS_SYS_TYPES_H 1 |
| |
| #define | LACKS_SYS_MMAN_H 1 |
| |
| #define | LACKS_FCNTL_H 1 |
| |
| #define | LACKS_TIME_H 1 |
| |
| #define | XE_DLMALLOC_SEGWIRE 1 |
| |
| #define | ABORT_ON_ASSERT_FAILURE 1 |
| |
| #define | DEBUG 1 |
| |
| #define | ABORT do { _KePrint("[dlmalloc] consistency check failed: sys/_heap.cpp line %d\n", __LINE__); for(;;); } while (0) |
| |
| #define | LACKS_STDLIB_H 1 |
| |
| #define | LACKS_STRING_H 1 |
| |
| #define | LACKS_WINDOWS_H 1 |
| |
| #define | LACKS_ERRNO_H 1 |
| |
| #define | NO_MALLOC_STATS 1 |
| |
| #define | EINVAL 22 |
| |
| #define | ENOMEM 12 |
| |
| #define | ENOTSUP 95 |
| |
| #define | errno _kernel_errno |
| |
| #define | errno 0 |
| |
| #define | MORECORE_FAILURE ((void*)(-1)) |
| |
| #define | MAX_SIZE_T (~(size_t)0) |
| |
| #define | USE_SPIN_LOCKS 0 |
| |
| #define | ONLY_MSPACES 0 |
| |
| #define | MSPACES 0 |
| |
| #define | MALLOC_ALIGNMENT ((size_t)(2 * sizeof(void *))) |
| |
| #define | FOOTERS 0 |
| |
| #define | PROCEED_ON_ERROR 0 |
| |
| #define | INSECURE 0 |
| |
| #define | MALLOC_INSPECT_ALL 0 |
| |
| #define | MMAP_CLEARS 1 |
| |
| #define | MORECORE_DEFAULT sbrk |
| |
| #define | DEFAULT_TRIM_THRESHOLD MAX_SIZE_T |
| |
| #define | DEFAULT_MMAP_THRESHOLD ((size_t)256U * (size_t)1024U) |
| |
| #define | MAX_RELEASE_CHECK_RATE 4095 |
| |
| #define | USE_BUILTIN_FFS 0 |
| |
| #define | USE_DEV_RANDOM 0 |
| |
| #define | MALLINFO_FIELD_TYPE size_t |
| |
| #define | NO_SEGMENT_TRAVERSAL 0 |
| |
| #define | M_TRIM_THRESHOLD (-1) |
| |
| #define | M_GRANULARITY (-2) |
| |
| #define | M_MMAP_THRESHOLD (-3) |
| |
| #define | NOINLINE |
| |
| #define | FORCEINLINE |
| |
| #define | assert(x) if(!(x)) ABORT |
| |
| #define | LOCK_AT_FORK 0 |
| |
| #define | malloc_getpagesize ((size_t)4096U) |
| |
| #define | SIZE_T_SIZE (sizeof(size_t)) |
| |
| #define | SIZE_T_BITSIZE (sizeof(size_t) << 3) |
| |
| #define | SIZE_T_ZERO ((size_t)0) |
| |
| #define | SIZE_T_ONE ((size_t)1) |
| |
| #define | SIZE_T_TWO ((size_t)2) |
| |
| #define | SIZE_T_FOUR ((size_t)4) |
| |
| #define | TWO_SIZE_T_SIZES (SIZE_T_SIZE<<1) |
| |
| #define | FOUR_SIZE_T_SIZES (SIZE_T_SIZE<<2) |
| |
| #define | SIX_SIZE_T_SIZES (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES) |
| |
| #define | HALF_MAX_SIZE_T (MAX_SIZE_T / 2U) |
| |
| #define | CHUNK_ALIGN_MASK (MALLOC_ALIGNMENT - SIZE_T_ONE) |
| |
| #define | is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0) |
| |
| #define | align_offset(A) |
| |
| #define | MFAIL ((void*)(MAX_SIZE_T)) |
| |
| #define | CMFAIL ((char*)(MFAIL)) /* defined for convenience */ |
| |
| #define | MUNMAP_DEFAULT(a, s) munmap((a), (s)) |
| |
| #define | MMAP_PROT (PROT_READ|PROT_WRITE) |
| |
| #define | MMAP_FLAGS (MAP_PRIVATE) |
| |
| #define | MMAP_DEFAULT(s) |
| |
| #define | DIRECT_MMAP_DEFAULT(s) MMAP_DEFAULT(s) |
| |
| #define | CALL_MORECORE(S) MORECORE(S) |
| |
| #define | USE_MMAP_BIT (SIZE_T_ONE) |
| |
| #define | CALL_MMAP(s) MMAP_DEFAULT(s) |
| |
| #define | CALL_MUNMAP(a, s) MUNMAP_DEFAULT((a), (s)) |
| |
| #define | CALL_DIRECT_MMAP(s) DIRECT_MMAP_DEFAULT(s) |
| |
| #define | CALL_MREMAP(addr, osz, nsz, mv) MFAIL |
| |
| #define | USE_NONCONTIGUOUS_BIT (4U) |
| |
| #define | EXTERN_BIT (8U) |
| |
| #define | USE_LOCK_BIT (0U) |
| |
| #define | INITIAL_LOCK(l) (0) |
| |
| #define | DESTROY_LOCK(l) (0) |
| |
| #define | ACQUIRE_MALLOC_GLOBAL_LOCK() |
| |
| #define | RELEASE_MALLOC_GLOBAL_LOCK() |
| |
| #define | MCHUNK_SIZE (sizeof(mchunk)) |
| |
| #define | CHUNK_OVERHEAD (SIZE_T_SIZE) |
| |
| #define | MMAP_CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) |
| |
| #define | MMAP_FOOT_PAD (FOUR_SIZE_T_SIZES) |
| |
| #define | MIN_CHUNK_SIZE ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) |
| |
| #define | chunk2mem(p) ((void*)((char*)(p) + TWO_SIZE_T_SIZES)) |
| |
| #define | mem2chunk(mem) ((mchunkptr)((char*)(mem) - TWO_SIZE_T_SIZES)) |
| |
| #define | align_as_chunk(A) (mchunkptr)((A) + align_offset(chunk2mem(A))) |
| |
| #define | MAX_REQUEST ((-MIN_CHUNK_SIZE) << 2) |
| |
| #define | MIN_REQUEST (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE) |
| |
| #define | pad_request(req) (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) |
| |
| #define | request2size(req) (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) |
| |
| #define | PINUSE_BIT (SIZE_T_ONE) |
| |
| #define | CINUSE_BIT (SIZE_T_TWO) |
| |
| #define | FLAG4_BIT (SIZE_T_FOUR) |
| |
| #define | INUSE_BITS (PINUSE_BIT|CINUSE_BIT) |
| |
| #define | FLAG_BITS (PINUSE_BIT|CINUSE_BIT|FLAG4_BIT) |
| |
| #define | FENCEPOST_HEAD (INUSE_BITS|SIZE_T_SIZE) |
| |
| #define | cinuse(p) ((p)->head & CINUSE_BIT) |
| |
| #define | pinuse(p) ((p)->head & PINUSE_BIT) |
| |
| #define | flag4inuse(p) ((p)->head & FLAG4_BIT) |
| |
| #define | is_inuse(p) (((p)->head & INUSE_BITS) != PINUSE_BIT) |
| |
| #define | is_mmapped(p) (((p)->head & INUSE_BITS) == 0) |
| |
| #define | chunksize(p) ((p)->head & ~(FLAG_BITS)) |
| |
| #define | clear_pinuse(p) ((p)->head &= ~PINUSE_BIT) |
| |
| #define | set_flag4(p) ((p)->head |= FLAG4_BIT) |
| |
| #define | clear_flag4(p) ((p)->head &= ~FLAG4_BIT) |
| |
| #define | chunk_plus_offset(p, s) ((mchunkptr)(((char*)(p)) + (s))) |
| |
| #define | chunk_minus_offset(p, s) ((mchunkptr)(((char*)(p)) - (s))) |
| |
| #define | next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->head & ~FLAG_BITS))) |
| |
| #define | prev_chunk(p) ((mchunkptr)( ((char*)(p)) - ((p)->prev_foot) )) |
| |
| #define | next_pinuse(p) ((next_chunk(p)->head) & PINUSE_BIT) |
| |
| #define | get_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot) |
| |
| #define | set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot = (s)) |
| |
| #define | set_size_and_pinuse_of_free_chunk(p, s) ((p)->head = (s|PINUSE_BIT), set_foot(p, s)) |
| |
| #define | set_free_with_pinuse(p, s, n) (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) |
| |
| #define | overhead_for(p) (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) |
| |
| #define | calloc_must_clear(p) (!is_mmapped(p)) |
| |
| #define | leftmost_child(t) ((t)->child[0] != 0? (t)->child[0] : (t)->child[1]) |
| |
| #define | is_mmapped_segment(S) ((S)->sflags & USE_MMAP_BIT) |
| |
| #define | is_extern_segment(S) ((S)->sflags & EXTERN_BIT) |
| |
| #define | NSMALLBINS (32U) |
| |
| #define | NTREEBINS (32U) |
| |
| #define | SMALLBIN_SHIFT (3U) |
| |
| #define | SMALLBIN_WIDTH (SIZE_T_ONE << SMALLBIN_SHIFT) |
| |
| #define | TREEBIN_SHIFT (8U) |
| |
| #define | MIN_LARGE_SIZE (SIZE_T_ONE << TREEBIN_SHIFT) |
| |
| #define | MAX_SMALL_SIZE (MIN_LARGE_SIZE - SIZE_T_ONE) |
| |
| #define | MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD) |
| |
| #define | ensure_initialization() (void)(mparams.magic != 0 || init_mparams()) |
| |
| #define | gm (&_gm_) |
| |
| #define | is_global(M) ((M) == &_gm_) |
| |
| #define | is_initialized(M) ((M)->top != 0) |
| |
| #define | use_lock(M) ((M)->mflags & USE_LOCK_BIT) |
| |
| #define | enable_lock(M) ((M)->mflags |= USE_LOCK_BIT) |
| |
| #define | disable_lock(M) |
| |
| #define | use_mmap(M) ((M)->mflags & USE_MMAP_BIT) |
| |
| #define | enable_mmap(M) ((M)->mflags |= USE_MMAP_BIT) |
| |
| #define | disable_mmap(M) ((M)->mflags &= ~USE_MMAP_BIT) |
| |
| #define | use_noncontiguous(M) ((M)->mflags & USE_NONCONTIGUOUS_BIT) |
| |
| #define | disable_contiguous(M) ((M)->mflags |= USE_NONCONTIGUOUS_BIT) |
| |
| #define | set_lock(M, L) |
| |
| #define | page_align(S) (((S) + (mparams.page_size - SIZE_T_ONE)) & ~(mparams.page_size - SIZE_T_ONE)) |
| |
| #define | granularity_align(S) |
| |
| #define | mmap_align(S) page_align(S) |
| |
| #define | SYS_ALLOC_PADDING (TOP_FOOT_SIZE + MALLOC_ALIGNMENT) |
| |
| #define | is_page_aligned(S) (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) |
| |
| #define | is_granularity_aligned(S) (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) |
| |
| #define | segment_holds(S, A) ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) |
| |
| #define | should_trim(M, s) (1) |
| |
| #define | TOP_FOOT_SIZE (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) |
| |
| #define | PREACTION(M) (0) |
| |
| #define | POSTACTION(M) |
| |
| #define | CORRUPTION_ERROR_ACTION(m) ABORT |
| |
| #define | USAGE_ERROR_ACTION(m, p) ABORT |
| |
| #define | check_free_chunk(M, P) do_check_free_chunk(M,P) |
| |
| #define | check_inuse_chunk(M, P) do_check_inuse_chunk(M,P) |
| |
| #define | check_top_chunk(M, P) do_check_top_chunk(M,P) |
| |
| #define | check_malloced_chunk(M, P, N) do_check_malloced_chunk(M,P,N) |
| |
| #define | check_mmapped_chunk(M, P) do_check_mmapped_chunk(M,P) |
| |
| #define | check_malloc_state(M) do_check_malloc_state(M) |
| |
| #define | is_small(s) (((s) >> SMALLBIN_SHIFT) < NSMALLBINS) |
| |
| #define | small_index(s) (bindex_t)((s) >> SMALLBIN_SHIFT) |
| |
| #define | small_index2size(i) ((i) << SMALLBIN_SHIFT) |
| |
| #define | MIN_SMALL_INDEX (small_index(MIN_CHUNK_SIZE)) |
| |
| #define | smallbin_at(M, i) ((sbinptr)((char*)&((M)->smallbins[(i)<<1]))) |
| |
| #define | treebin_at(M, i) (&((M)->treebins[i])) |
| |
| #define | compute_tree_index(S, I) |
| |
| #define | bit_for_tree_index(i) (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) |
| |
| #define | leftshift_for_tree_index(i) |
| |
| #define | minsize_for_tree_index(i) |
| |
| #define | idx2bit(i) ((binmap_t)(1) << (i)) |
| |
| #define | mark_smallmap(M, i) ((M)->smallmap |= idx2bit(i)) |
| |
| #define | clear_smallmap(M, i) ((M)->smallmap &= ~idx2bit(i)) |
| |
| #define | smallmap_is_marked(M, i) ((M)->smallmap & idx2bit(i)) |
| |
| #define | mark_treemap(M, i) ((M)->treemap |= idx2bit(i)) |
| |
| #define | clear_treemap(M, i) ((M)->treemap &= ~idx2bit(i)) |
| |
| #define | treemap_is_marked(M, i) ((M)->treemap & idx2bit(i)) |
| |
| #define | least_bit(x) ((x) & -(x)) |
| |
| #define | left_bits(x) ((x<<1) | -(x<<1)) |
| |
| #define | same_or_left_bits(x) ((x) | -(x)) |
| |
| #define | compute_bit2idx(X, I) |
| |
| #define | ok_address(M, a) ((char*)(a) >= (M)->least_addr) |
| |
| #define | ok_next(p, n) ((char*)(p) < (char*)(n)) |
| |
| #define | ok_inuse(p) is_inuse(p) |
| |
| #define | ok_pinuse(p) pinuse(p) |
| |
| #define | ok_magic(M) (1) |
| |
| #define | RTCHECK(e) (e) |
| |
| #define | mark_inuse_foot(M, p, s) |
| |
| #define | set_inuse(M, p, s) |
| |
| #define | set_inuse_and_pinuse(M, p, s) |
| |
| #define | set_size_and_pinuse_of_inuse_chunk(M, p, s) ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) |
| |
| #define | insert_small_chunk(M, P, S) |
| |
| #define | unlink_small_chunk(M, P, S) |
| |
| #define | unlink_first_small_chunk(M, B, P, I) |
| |
| #define | replace_dv(M, P, S) |
| |
| #define | insert_large_chunk(M, X, S) |
| |
| #define | unlink_large_chunk(M, X) |
| |
| #define | insert_chunk(M, P, S) |
| |
| #define | unlink_chunk(M, P, S) |
| |
| #define | internal_malloc(m, b) dlmalloc(b) |
| |
| #define | internal_free(m, mem) dlfree(mem) |
| |
| #define | fm gm |
| |