Lines Matching refs:bin
30 arena_run_t *run, arena_bin_t *bin);
32 arena_run_t *run, arena_bin_t *bin);
1661 arena_bin_runs_first(arena_bin_t *bin)
1663 arena_chunk_map_misc_t *miscelm = arena_run_tree_first(&bin->runs);
1671 arena_bin_runs_insert(arena_bin_t *bin, arena_run_t *run)
1675 assert(arena_run_tree_search(&bin->runs, miscelm) == NULL);
1677 arena_run_tree_insert(&bin->runs, miscelm);
1681 arena_bin_runs_remove(arena_bin_t *bin, arena_run_t *run)
1685 assert(arena_run_tree_search(&bin->runs, miscelm) != NULL);
1687 arena_run_tree_remove(&bin->runs, miscelm);
1691 arena_bin_nonfull_run_tryget(arena_bin_t *bin)
1693 arena_run_t *run = arena_bin_runs_first(bin);
1695 arena_bin_runs_remove(bin, run);
1697 bin->stats.reruns++;
1703 arena_bin_nonfull_run_get(arena_t *arena, arena_bin_t *bin)
1710 run = arena_bin_nonfull_run_tryget(bin);
1715 binind = arena_bin_index(arena, bin);
1719 malloc_mutex_unlock(&bin->lock);
1731 malloc_mutex_lock(&bin->lock);
1734 bin->stats.nruns++;
1735 bin->stats.curruns++;
1742 * sufficient memory available while this one dropped bin->lock above,
1745 run = arena_bin_nonfull_run_tryget(bin);
1752 /* Re-fill bin->runcur, then call arena_run_reg_alloc(). */
1754 arena_bin_malloc_hard(arena_t *arena, arena_bin_t *bin)
1761 binind = arena_bin_index(arena, bin);
1763 bin->runcur = NULL;
1764 run = arena_bin_nonfull_run_get(arena, bin);
1765 if (bin->runcur != NULL && bin->runcur->nfree > 0) {
1768 * bin lock in arena_bin_nonfull_run_get().
1770 assert(bin->runcur->nfree > 0);
1771 ret = arena_run_reg_alloc(bin->runcur, bin_info);
1777 * it may have pulled run from the bin's run tree.
1785 arena_dalloc_bin_run(arena, chunk, run, bin);
1787 arena_bin_lower_run(arena, chunk, run, bin);
1795 bin->runcur = run;
1797 assert(bin->runcur->nfree > 0);
1799 return (arena_run_reg_alloc(bin->runcur, bin_info));
1807 arena_bin_t *bin;
1815 bin = &arena->bins[binind];
1816 malloc_mutex_lock(&bin->lock);
1819 if ((run = bin->runcur) != NULL && run->nfree > 0)
1822 ptr = arena_bin_malloc_hard(arena, bin);
1844 bin->stats.nmalloc += i;
1845 bin->stats.nrequests += tbin->tstats.nrequests;
1846 bin->stats.curregs += i;
1847 bin->stats.nfills++;
1850 malloc_mutex_unlock(&bin->lock);
1962 arena_bin_t *bin;
1968 bin = &arena->bins[binind];
1971 malloc_mutex_lock(&bin->lock);
1972 if ((run = bin->runcur) != NULL && run->nfree > 0)
1975 ret = arena_bin_malloc_hard(arena, bin);
1978 malloc_mutex_unlock(&bin->lock);
1983 bin->stats.nmalloc++;
1984 bin->stats.nrequests++;
1985 bin->stats.curregs++;
1987 malloc_mutex_unlock(&bin->lock);
2208 arena_bin_t *bin)
2211 /* Dissociate run from bin. */
2212 if (run == bin->runcur)
2213 bin->runcur = NULL;
2216 &chunk->node), bin);
2225 arena_bin_runs_remove(bin, run);
2232 arena_bin_t *bin)
2235 assert(run != bin->runcur);
2236 assert(arena_run_tree_search(&bin->runs, arena_run_to_miscelm(run)) ==
2239 malloc_mutex_unlock(&bin->lock);
2245 malloc_mutex_lock(&bin->lock);
2247 bin->stats.curruns--;
2252 arena_bin_t *bin)
2256 * Make sure that if bin->runcur is non-NULL, it refers to the lowest
2260 if ((uintptr_t)run < (uintptr_t)bin->runcur) {
2262 if (bin->runcur->nfree > 0)
2263 arena_bin_runs_insert(bin, bin->runcur);
2264 bin->runcur = run;
2266 bin->stats.reruns++;
2268 arena_bin_runs_insert(bin, run);
2277 arena_bin_t *bin;
2285 bin = &arena->bins[binind];
2293 arena_dissociate_bin_run(chunk, run, bin);
2294 arena_dalloc_bin_run(arena, chunk, run, bin);
2295 } else if (run->nfree == 1 && run != bin->runcur)
2296 arena_bin_lower_run(arena, chunk, run, bin);
2299 bin->stats.ndalloc++;
2300 bin->stats.curregs--;
2317 arena_bin_t *bin;
2322 bin = &arena->bins[run->binind];
2323 malloc_mutex_lock(&bin->lock);
2325 malloc_mutex_unlock(&bin->lock);
2775 arena_bin_t *bin = &arena->bins[i];
2777 malloc_mutex_lock(&bin->lock);
2778 bstats[i].nmalloc += bin->stats.nmalloc;
2779 bstats[i].ndalloc += bin->stats.ndalloc;
2780 bstats[i].nrequests += bin->stats.nrequests;
2781 bstats[i].curregs += bin->stats.curregs;
2783 bstats[i].nfills += bin->stats.nfills;
2784 bstats[i].nflushes += bin->stats.nflushes;
2786 bstats[i].nruns += bin->stats.nruns;
2787 bstats[i].reruns += bin->stats.reruns;
2788 bstats[i].curruns += bin->stats.curruns;
2789 malloc_mutex_unlock(&bin->lock);
2798 arena_bin_t *bin;
2882 bin = &arena->bins[i];
2883 if (malloc_mutex_init(&bin->lock))
2885 bin->runcur = NULL;
2886 arena_run_tree_new(&bin->runs);
2888 memset(&bin->stats, 0, sizeof(malloc_bin_stats_t));
3001 #define SC(index, lg_grp, lg_delta, ndelta, bin, lg_delta_lookup) \
3002 BIN_INFO_INIT_bin_##bin(index, (ZU(1)<<lg_grp) + (ZU(ndelta)<<lg_delta))
3025 #define SC(index, lg_grp, lg_delta, ndelta, bin, lg_delta_lookup) \
3026 TAB_INIT_bin_##bin(index, (ZU(1)<<lg_grp) + (ZU(ndelta)<<lg_delta))