25 #ifdef DO_MEMORY_USAGE 27 #endif // DO_MEMORY_USAGE 39 #ifdef DO_MEMORY_USAGE 42 #endif // DO_MEMORY_USAGE 60 const size_t alignment_size = 32;
62 const size_t alignment_size = 16;
66 const size_t alignment_size =
sizeof(
void *);
68 return alignment_size;
89 const size_t header_reserved_bytes = 32;
91 const size_t header_reserved_bytes = 16;
94 #elif defined(MEMORY_HOOK_DO_ALIGN) 98 static const size_t header_reserved_bytes =
sizeof(size_t) +
sizeof(
size_t);
102 static const size_t header_reserved_bytes =
sizeof(size_t);
105 return header_reserved_bytes;
129 return ((size + _page_size - 1) / _page_size) * _page_size;
139 INLINE
size_t MemoryHook::
140 inflate_size(
size_t size) {
141 #if defined(MEMORY_HOOK_DO_ALIGN) 145 #elif defined(DO_MEMORY_USAGE) 154 #endif // DO_MEMORY_USAGE 164 INLINE
void *MemoryHook::
165 alloc_to_ptr(
void *alloc,
size_t size) {
166 #if defined(MEMORY_HOOK_DO_ALIGN) 169 size_t *root = (
size_t *)((((
size_t)alloc + alignment - 1) / alignment) * alignment);
170 assert(alloc <= root && (
size_t)((
char *)root - (
char *)alloc) < alignment);
172 root[1] = (size_t)alloc;
174 #elif defined(DO_MEMORY_USAGE) 175 size_t *root = (
size_t *)alloc;
180 #endif // DO_MEMORY_USAGE 190 INLINE
void *MemoryHook::
191 ptr_to_alloc(
void *ptr,
size_t &size) {
192 #if defined(MEMORY_HOOK_DO_ALIGN) 195 void *alloc = (
void *)root[1];
198 #elif defined(DO_MEMORY_USAGE) 204 #endif // DO_MEMORY_USAGE void inc_heap(size_t size)
Called by our alternative malloc implementations (dlmalloc and ptmalloc2) to indicate they have reque...
static void add(Integer &var, Integer delta)
Atomically computes var += delta.
size_t get_page_size() const
Returns the operating system page size.
static size_t get_header_reserved_bytes()
Returns the number of additional bytes that are reserved at the beginning of every allocated block to...
void dec_heap(size_t size)
Called by our alternative malloc implementations (dlmalloc and ptmalloc2) to indicate they have retur...
size_t round_up_to_page_size(size_t size) const
Rounds the indicated size request up to the next larger multiple of page_size, to qualify it for a ca...
static size_t get_memory_alignment()
Returns the global memory alignment.