1 | #include "jemalloc/internal/jemalloc_preamble.h" |
2 | #include "jemalloc/internal/jemalloc_internal_includes.h" |
3 | |
4 | size_t |
5 | pai_alloc_batch_default(tsdn_t *tsdn, pai_t *self, size_t size, size_t nallocs, |
6 | edata_list_active_t *results, bool *deferred_work_generated) { |
7 | for (size_t i = 0; i < nallocs; i++) { |
8 | bool deferred_by_alloc = false; |
9 | edata_t *edata = pai_alloc(tsdn, self, size, PAGE, |
10 | /* zero */ false, /* guarded */ false, |
11 | /* frequent_reuse */ false, &deferred_by_alloc); |
12 | *deferred_work_generated |= deferred_by_alloc; |
13 | if (edata == NULL) { |
14 | return i; |
15 | } |
16 | edata_list_active_append(results, edata); |
17 | } |
18 | return nallocs; |
19 | } |
20 | |
21 | void |
22 | pai_dalloc_batch_default(tsdn_t *tsdn, pai_t *self, |
23 | edata_list_active_t *list, bool *deferred_work_generated) { |
24 | edata_t *edata; |
25 | while ((edata = edata_list_active_first(list)) != NULL) { |
26 | bool deferred_by_dalloc = false; |
27 | edata_list_active_remove(list, edata); |
28 | pai_dalloc(tsdn, self, edata, &deferred_by_dalloc); |
29 | *deferred_work_generated |= deferred_by_dalloc; |
30 | } |
31 | } |
32 | |