MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / arena_bin_reset

Function arena_bin_reset

deps/jemalloc/src/arena.c:1064–1093  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1062}
1063
1064static void
1065arena_bin_reset(tsd_t *tsd, arena_t *arena, bin_t *bin) {
1066 extent_t *slab;
1067
1068 malloc_mutex_lock(tsd_tsdn(tsd), &bin->lock);
1069 if (bin->slabcur != NULL) {
1070 slab = bin->slabcur;
1071 bin->slabcur = NULL;
1072 malloc_mutex_unlock(tsd_tsdn(tsd), &bin->lock);
1073 arena_slab_dalloc(tsd_tsdn(tsd), arena, slab);
1074 malloc_mutex_lock(tsd_tsdn(tsd), &bin->lock);
1075 }
1076 while ((slab = extent_heap_remove_first(&bin->slabs_nonfull)) != NULL) {
1077 malloc_mutex_unlock(tsd_tsdn(tsd), &bin->lock);
1078 arena_slab_dalloc(tsd_tsdn(tsd), arena, slab);
1079 malloc_mutex_lock(tsd_tsdn(tsd), &bin->lock);
1080 }
1081 for (slab = extent_list_first(&bin->slabs_full); slab != NULL;
1082 slab = extent_list_first(&bin->slabs_full)) {
1083 arena_bin_slabs_full_remove(arena, bin, slab);
1084 malloc_mutex_unlock(tsd_tsdn(tsd), &bin->lock);
1085 arena_slab_dalloc(tsd_tsdn(tsd), arena, slab);
1086 malloc_mutex_lock(tsd_tsdn(tsd), &bin->lock);
1087 }
1088 if (config_stats) {
1089 bin->stats.curregs = 0;
1090 bin->stats.curslabs = 0;
1091 }
1092 malloc_mutex_unlock(tsd_tsdn(tsd), &bin->lock);
1093}
1094
1095void
1096arena_reset(tsd_t *tsd, arena_t *arena) {

Callers 1

arena_resetFunction · 0.85

Calls 6

arena_slab_dallocFunction · 0.70
malloc_mutex_lockFunction · 0.50
tsd_tsdnFunction · 0.50
malloc_mutex_unlockFunction · 0.50
extent_list_firstFunction · 0.50

Tested by

no test coverage detected