Lines Matching refs:slab

62 static void arena_dalloc_bin_slab(tsdn_t *tsdn, arena_t *arena, extent_t *slab,
64 static void arena_bin_lower_slab(tsdn_t *tsdn, arena_t *arena, extent_t *slab,
271 arena_slab_reg_alloc(extent_t *slab, const bin_info_t *bin_info) { in arena_slab_reg_alloc() argument
273 arena_slab_data_t *slab_data = extent_slab_data_get(slab); in arena_slab_reg_alloc()
276 assert(extent_nfree_get(slab) > 0); in arena_slab_reg_alloc()
280 ret = (void *)((uintptr_t)extent_addr_get(slab) + in arena_slab_reg_alloc()
282 extent_nfree_dec(slab); in arena_slab_reg_alloc()
287 arena_slab_reg_alloc_batch(extent_t *slab, const bin_info_t *bin_info, in arena_slab_reg_alloc_batch() argument
289 arena_slab_data_t *slab_data = extent_slab_data_get(slab); in arena_slab_reg_alloc_batch()
291 assert(extent_nfree_get(slab) >= cnt); in arena_slab_reg_alloc_batch()
298 *(ptrs + i) = (void *)((uintptr_t)extent_addr_get(slab) + in arena_slab_reg_alloc_batch()
319 uintptr_t base = (uintptr_t)extent_addr_get(slab); in arena_slab_reg_alloc_batch()
331 extent_nfree_sub(slab, cnt); in arena_slab_reg_alloc_batch()
338 arena_slab_regind(extent_t *slab, szind_t binind, const void *ptr) { in arena_slab_regind() argument
342 assert((uintptr_t)ptr >= (uintptr_t)extent_addr_get(slab)); in arena_slab_regind()
343 assert((uintptr_t)ptr < (uintptr_t)extent_past_get(slab)); in arena_slab_regind()
345 assert(((uintptr_t)ptr - (uintptr_t)extent_addr_get(slab)) % in arena_slab_regind()
348 diff = (size_t)((uintptr_t)ptr - (uintptr_t)extent_addr_get(slab)); in arena_slab_regind()
359 arena_slab_reg_dalloc(extent_t *slab, arena_slab_data_t *slab_data, void *ptr) { in arena_slab_reg_dalloc() argument
360 szind_t binind = extent_szind_get(slab); in arena_slab_reg_dalloc()
362 size_t regind = arena_slab_regind(slab, binind, ptr); in arena_slab_reg_dalloc()
364 assert(extent_nfree_get(slab) < bin_info->nregs); in arena_slab_reg_dalloc()
369 extent_nfree_inc(slab); in arena_slab_reg_dalloc()
1005 arena_slab_dalloc(tsdn_t *tsdn, arena_t *arena, extent_t *slab) { in arena_slab_dalloc() argument
1006 arena_nactive_sub(arena, extent_size_get(slab) >> LG_PAGE); in arena_slab_dalloc()
1009 arena_extents_dirty_dalloc(tsdn, arena, &extent_hooks, slab); in arena_slab_dalloc()
1013 arena_bin_slabs_nonfull_insert(bin_t *bin, extent_t *slab) { in arena_bin_slabs_nonfull_insert() argument
1014 assert(extent_nfree_get(slab) > 0); in arena_bin_slabs_nonfull_insert()
1015 extent_heap_insert(&bin->slabs_nonfull, slab); in arena_bin_slabs_nonfull_insert()
1022 arena_bin_slabs_nonfull_remove(bin_t *bin, extent_t *slab) { in arena_bin_slabs_nonfull_remove() argument
1023 extent_heap_remove(&bin->slabs_nonfull, slab); in arena_bin_slabs_nonfull_remove()
1031 extent_t *slab = extent_heap_remove_first(&bin->slabs_nonfull); in arena_bin_slabs_nonfull_tryget() local
1032 if (slab == NULL) { in arena_bin_slabs_nonfull_tryget()
1039 return slab; in arena_bin_slabs_nonfull_tryget()
1043 arena_bin_slabs_full_insert(arena_t *arena, bin_t *bin, extent_t *slab) { in arena_bin_slabs_full_insert() argument
1044 assert(extent_nfree_get(slab) == 0); in arena_bin_slabs_full_insert()
1053 extent_list_append(&bin->slabs_full, slab); in arena_bin_slabs_full_insert()
1057 arena_bin_slabs_full_remove(arena_t *arena, bin_t *bin, extent_t *slab) { in arena_bin_slabs_full_remove() argument
1061 extent_list_remove(&bin->slabs_full, slab); in arena_bin_slabs_full_remove()
1066 extent_t *slab; in arena_bin_reset() local
1070 slab = bin->slabcur; in arena_bin_reset()
1073 arena_slab_dalloc(tsd_tsdn(tsd), arena, slab); in arena_bin_reset()
1076 while ((slab = extent_heap_remove_first(&bin->slabs_nonfull)) != NULL) { in arena_bin_reset()
1078 arena_slab_dalloc(tsd_tsdn(tsd), arena, slab); in arena_bin_reset()
1081 for (slab = extent_list_first(&bin->slabs_full); slab != NULL; in arena_bin_reset()
1082 slab = extent_list_first(&bin->slabs_full)) { in arena_bin_reset()
1083 arena_bin_slabs_full_remove(arena, bin, slab); in arena_bin_reset()
1085 arena_slab_dalloc(tsd_tsdn(tsd), arena, slab); in arena_bin_reset()
1123 (uintptr_t)ptr, true, &alloc_ctx.szind, &alloc_ctx.slab); in arena_reset()
1209 extent_t *slab; in arena_slab_alloc_hard() local
1217 slab = extent_alloc_wrapper(tsdn, arena, r_extent_hooks, NULL, in arena_slab_alloc_hard()
1220 if (config_stats && slab != NULL) { in arena_slab_alloc_hard()
1225 return slab; in arena_slab_alloc_hard()
1238 extent_t *slab = extents_alloc(tsdn, arena, &extent_hooks, in arena_slab_alloc() local
1241 if (slab == NULL && arena_may_have_muzzy(arena)) { in arena_slab_alloc()
1242 slab = extents_alloc(tsdn, arena, &extent_hooks, in arena_slab_alloc()
1246 if (slab == NULL) { in arena_slab_alloc()
1247 slab = arena_slab_alloc_hard(tsdn, arena, &extent_hooks, in arena_slab_alloc()
1249 if (slab == NULL) { in arena_slab_alloc()
1253 assert(extent_slab_get(slab)); in arena_slab_alloc()
1256 arena_slab_data_t *slab_data = extent_slab_data_get(slab); in arena_slab_alloc()
1257 extent_nfree_binshard_set(slab, bin_info->nregs, binshard); in arena_slab_alloc()
1260 arena_nactive_add(arena, extent_size_get(slab) >> LG_PAGE); in arena_slab_alloc()
1262 return slab; in arena_slab_alloc()
1268 extent_t *slab; in arena_bin_nonfull_slab_get() local
1272 slab = arena_bin_slabs_nonfull_tryget(bin); in arena_bin_nonfull_slab_get()
1273 if (slab != NULL) { in arena_bin_nonfull_slab_get()
1274 return slab; in arena_bin_nonfull_slab_get()
1283 slab = arena_slab_alloc(tsdn, arena, binind, binshard, bin_info); in arena_bin_nonfull_slab_get()
1286 if (slab != NULL) { in arena_bin_nonfull_slab_get()
1291 return slab; in arena_bin_nonfull_slab_get()
1299 slab = arena_bin_slabs_nonfull_tryget(bin); in arena_bin_nonfull_slab_get()
1300 if (slab != NULL) { in arena_bin_nonfull_slab_get()
1301 return slab; in arena_bin_nonfull_slab_get()
1312 extent_t *slab; in arena_bin_malloc_hard() local
1319 slab = arena_bin_nonfull_slab_get(tsdn, arena, bin, binind, binshard); in arena_bin_malloc_hard()
1328 if (slab != NULL) { in arena_bin_malloc_hard()
1338 if (extent_nfree_get(slab) == bin_info->nregs) { in arena_bin_malloc_hard()
1339 arena_dalloc_bin_slab(tsdn, arena, slab, in arena_bin_malloc_hard()
1342 arena_bin_lower_slab(tsdn, arena, slab, in arena_bin_malloc_hard()
1353 if (slab == NULL) { in arena_bin_malloc_hard()
1356 bin->slabcur = slab; in arena_bin_malloc_hard()
1360 return arena_slab_reg_alloc(slab, bin_info); in arena_bin_malloc_hard()
1396 extent_t *slab; in arena_tcache_fill_small() local
1397 if ((slab = bin->slabcur) != NULL && extent_nfree_get(slab) > in arena_tcache_fill_small()
1400 cnt = tofill < extent_nfree_get(slab) ? in arena_tcache_fill_small()
1401 tofill : extent_nfree_get(slab); in arena_tcache_fill_small()
1403 slab, &bin_infos[binind], cnt, in arena_tcache_fill_small()
1464 extent_t *slab; in arena_malloc_small() local
1471 if ((slab = bin->slabcur) != NULL && extent_nfree_get(slab) > 0) { in arena_malloc_small()
1472 ret = arena_slab_reg_alloc(slab, &bin_infos[binind]); in arena_malloc_small()
1622 arena_dissociate_bin_slab(arena_t *arena, extent_t *slab, bin_t *bin) { in arena_dissociate_bin_slab() argument
1624 if (slab == bin->slabcur) { in arena_dissociate_bin_slab()
1627 szind_t binind = extent_szind_get(slab); in arena_dissociate_bin_slab()
1636 arena_bin_slabs_full_remove(arena, bin, slab); in arena_dissociate_bin_slab()
1638 arena_bin_slabs_nonfull_remove(bin, slab); in arena_dissociate_bin_slab()
1644 arena_dalloc_bin_slab(tsdn_t *tsdn, arena_t *arena, extent_t *slab, in arena_dalloc_bin_slab() argument
1646 assert(slab != bin->slabcur); in arena_dalloc_bin_slab()
1650 arena_slab_dalloc(tsdn, arena, slab); in arena_dalloc_bin_slab()
1659 arena_bin_lower_slab(tsdn_t *tsdn, arena_t *arena, extent_t *slab, in arena_bin_lower_slab() argument
1661 assert(extent_nfree_get(slab) > 0); in arena_bin_lower_slab()
1669 if (bin->slabcur != NULL && extent_snad_comp(bin->slabcur, slab) > 0) { in arena_bin_lower_slab()
1676 bin->slabcur = slab; in arena_bin_lower_slab()
1681 arena_bin_slabs_nonfull_insert(bin, slab); in arena_bin_lower_slab()
1687 szind_t binind, extent_t *slab, void *ptr, bool junked) { in arena_dalloc_bin_locked_impl() argument
1688 arena_slab_data_t *slab_data = extent_slab_data_get(slab); in arena_dalloc_bin_locked_impl()
1695 arena_slab_reg_dalloc(slab, slab_data, ptr); in arena_dalloc_bin_locked_impl()
1696 unsigned nfree = extent_nfree_get(slab); in arena_dalloc_bin_locked_impl()
1698 arena_dissociate_bin_slab(arena, slab, bin); in arena_dalloc_bin_locked_impl()
1699 arena_dalloc_bin_slab(tsdn, arena, slab, bin); in arena_dalloc_bin_locked_impl()
1700 } else if (nfree == 1 && slab != bin->slabcur) { in arena_dalloc_bin_locked_impl()
1701 arena_bin_slabs_full_remove(arena, bin, slab); in arena_dalloc_bin_locked_impl()
1702 arena_bin_lower_slab(tsdn, arena, slab, bin); in arena_dalloc_bin_locked_impl()