Macaulay2 Engine
Loading...
Searching...
No Matches

◆ new_elem()

void * stash::new_elem ( )
inline

Definition at line 121 of file mem.hpp.

123{
124 return newarray_clear(char, element_size);
125 acquireSpinLock(&list_spinlock);
126 n_allocs++;
127 n_inuse++;
129 if (free_list == nullptr)
130 {
131 if (n_per_slab == 0)
132 {
133 void *result = newarray_clear(char, element_size);
134 // allocated_amount += element_size;
135 releaseSpinLock(&list_spinlock);
136 return result;
137 }
138 chop_slab();
139 }
140 assert(free_list != NULL); // chop_slab should not let this happen.
141 void *result = free_list;
142 free_list = *(reinterpret_cast<void **>(free_list));
143 releaseSpinLock(&list_spinlock);
144 return result;
145}
int n_per_slab
Definition mem.hpp:94
void chop_slab()
Definition mem.cpp:48
void * free_list
Definition mem.hpp:106
size_t highwater
Definition mem.hpp:111
spinLock list_spinlock
Definition mem.hpp:118
size_t n_allocs
Definition mem.hpp:109
size_t element_size
Definition mem.hpp:91
size_t n_inuse
Definition mem.hpp:110
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define newarray_clear(T, len)
Definition newdelete.hpp:83

References chop_slab(), element_size, free_list, highwater, list_spinlock, n_allocs, n_inuse, n_per_slab, newarray_clear, and result().