68 pre_alloc_local<T, byte_alignment>(num_ele, pre_size,
size_data);
74 pre_alloc_local<T, object_alignment>(num_ele, 0,
size_obj);
79 assert(
store == NULL);
83 throw "malloc failed";
91 return post_alloc_local<T, byte_alignment>
98 return post_alloc_local<T, object_alignment>
103 template<
typename T,
int N>
106 assert(
store == NULL);
107 num_ele = calc_aligned_size<T, N>(num_ele);
108 size_t total = (num_ele + pre_size) *
sizeof(T);
114 template<
typename T,
int N>
116 size_t& avail_sz,
void*& avail_p)
118 assert(
store != NULL);
119 num_ele = calc_aligned_size<T, N>(num_ele);
120 size_t total = (num_ele + pre_size) *
sizeof(T);
123 T* p = align_ptr<T, N>((T*)avail_p + pre_size);
124 avail_p = (
ui8*)avail_p + total;
126 assert((avail_sz & 0x8000000000000000llu) == 0);
void get_buffer(ui32 needed_bytes, coded_lists *&p)
mem_elastic_allocator(ui32 chunk_size)
void pre_alloc_data(size_t num_ele, ui32 pre_size)
void pre_alloc_obj(size_t num_ele)
void pre_alloc_local(size_t num_ele, ui32 pre_size, size_t &sz)
T * post_alloc_data(size_t num_ele, ui32 pre_size)
T * post_alloc_obj(size_t num_ele)
T * post_alloc_local(size_t num_ele, ui32 pre_size, size_t &avail_sz, void *&avail_p)
void wrap(T *buffer, size_t num_ele, ui32 pre_size)
void pre_alloc(mem_fixed_allocator *p, size_t num_ele, ui32 pre_size)
void finalize_alloc(mem_fixed_allocator *p)
static ui32 eval_store_bytes(ui32 available_bytes)
stores_list(ui32 available_bytes)