Lines Matching refs:gctx

495 	prof_bt_t *prod_bt = &tctx->gctx->bt;  in prof_try_log()
826 prof_gctx_t *gctx = (prof_gctx_t *)iallocztm(tsdn, size, in prof_gctx_create() local
829 if (gctx == NULL) { in prof_gctx_create()
832 gctx->lock = prof_gctx_mutex_choose(); in prof_gctx_create()
837 gctx->nlimbo = 1; in prof_gctx_create()
838 tctx_tree_new(&gctx->tctxs); in prof_gctx_create()
840 memcpy(gctx->vec, bt->vec, bt->len * sizeof(void *)); in prof_gctx_create()
841 gctx->bt.vec = gctx->vec; in prof_gctx_create()
842 gctx->bt.len = bt->len; in prof_gctx_create()
843 return gctx; in prof_gctx_create()
847 prof_gctx_try_destroy(tsd_t *tsd, prof_tdata_t *tdata_self, prof_gctx_t *gctx, in prof_gctx_try_destroy() argument
859 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_try_destroy()
860 assert(gctx->nlimbo != 0); in prof_gctx_try_destroy()
861 if (tctx_tree_empty(&gctx->tctxs) && gctx->nlimbo == 1) { in prof_gctx_try_destroy()
863 if (ckh_remove(tsd, &bt2gctx, &gctx->bt, NULL, NULL)) { in prof_gctx_try_destroy()
868 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_try_destroy()
869 idalloctm(tsd_tsdn(tsd), gctx, NULL, NULL, true, true); in prof_gctx_try_destroy()
875 gctx->nlimbo--; in prof_gctx_try_destroy()
876 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_try_destroy()
898 prof_gctx_should_destroy(prof_gctx_t *gctx) { in prof_gctx_should_destroy() argument
902 if (!tctx_tree_empty(&gctx->tctxs)) { in prof_gctx_should_destroy()
905 if (gctx->nlimbo != 0) { in prof_gctx_should_destroy()
914 prof_gctx_t *gctx = tctx->gctx; in prof_tctx_destroy() local
925 ckh_remove(tsd, &tdata->bt2tctx, &gctx->bt, NULL, NULL); in prof_tctx_destroy()
929 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock); in prof_tctx_destroy()
932 tctx_tree_remove(&gctx->tctxs, tctx); in prof_tctx_destroy()
934 if (prof_gctx_should_destroy(gctx)) { in prof_tctx_destroy()
949 gctx->nlimbo++; in prof_tctx_destroy()
970 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_tctx_destroy()
972 prof_gctx_try_destroy(tsd, prof_tdata_get(tsd, false), gctx, in prof_tctx_destroy()
993 } gctx, tgctx; in prof_lookup_global() local
1001 if (ckh_search(&bt2gctx, bt, &btkey.v, &gctx.v)) { in prof_lookup_global()
1009 if (ckh_search(&bt2gctx, bt, &btkey.v, &gctx.v)) { in prof_lookup_global()
1010 gctx.p = tgctx.p; in prof_lookup_global()
1011 btkey.p = &gctx.p->bt; in prof_lookup_global()
1012 if (ckh_insert(tsd, &bt2gctx, btkey.v, gctx.v)) { in prof_lookup_global()
1015 idalloctm(tsd_tsdn(tsd), gctx.v, NULL, NULL, in prof_lookup_global()
1033 malloc_mutex_lock(tsd_tsdn(tsd), gctx.p->lock); in prof_lookup_global()
1034 gctx.p->nlimbo++; in prof_lookup_global()
1035 malloc_mutex_unlock(tsd_tsdn(tsd), gctx.p->lock); in prof_lookup_global()
1047 *p_gctx = gctx.p; in prof_lookup_global()
1076 prof_gctx_t *gctx; in prof_lookup() local
1083 if (prof_lookup_global(tsd, bt, tdata, &btkey, &gctx, in prof_lookup()
1094 prof_gctx_try_destroy(tsd, tdata, gctx, tdata); in prof_lookup()
1102 ret.p->gctx = gctx; in prof_lookup()
1111 prof_gctx_try_destroy(tsd, tdata, gctx, tdata); in prof_lookup()
1116 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock); in prof_lookup()
1118 tctx_tree_insert(&gctx->tctxs, ret.p); in prof_lookup()
1119 gctx->nlimbo--; in prof_lookup()
1120 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_lookup()
1330 malloc_mutex_lock(tsdn, tctx->gctx->lock); in prof_tctx_merge_tdata()
1334 malloc_mutex_unlock(tsdn, tctx->gctx->lock); in prof_tctx_merge_tdata()
1338 malloc_mutex_unlock(tsdn, tctx->gctx->lock); in prof_tctx_merge_tdata()
1358 prof_tctx_merge_gctx(tsdn_t *tsdn, prof_tctx_t *tctx, prof_gctx_t *gctx) { in prof_tctx_merge_gctx() argument
1359 malloc_mutex_assert_owner(tsdn, gctx->lock); in prof_tctx_merge_gctx()
1361 gctx->cnt_summed.curobjs += tctx->dump_cnts.curobjs; in prof_tctx_merge_gctx()
1362 gctx->cnt_summed.curbytes += tctx->dump_cnts.curbytes; in prof_tctx_merge_gctx()
1364 gctx->cnt_summed.accumobjs += tctx->dump_cnts.accumobjs; in prof_tctx_merge_gctx()
1365 gctx->cnt_summed.accumbytes += tctx->dump_cnts.accumbytes; in prof_tctx_merge_gctx()
1373 malloc_mutex_assert_owner(tsdn, tctx->gctx->lock); in prof_tctx_merge_iter()
1381 prof_tctx_merge_gctx(tsdn, tctx, tctx->gctx); in prof_tctx_merge_iter()
1400 malloc_mutex_assert_owner(arg->tsdn, tctx->gctx->lock); in prof_tctx_dump_iter()
1428 malloc_mutex_assert_owner(tsdn, tctx->gctx->lock); in prof_tctx_finish_iter()
1450 prof_dump_gctx_prep(tsdn_t *tsdn, prof_gctx_t *gctx, prof_gctx_tree_t *gctxs) { in prof_dump_gctx_prep() argument
1453 malloc_mutex_lock(tsdn, gctx->lock); in prof_dump_gctx_prep()
1460 gctx->nlimbo++; in prof_dump_gctx_prep()
1461 gctx_tree_insert(gctxs, gctx); in prof_dump_gctx_prep()
1463 memset(&gctx->cnt_summed, 0, sizeof(prof_cnt_t)); in prof_dump_gctx_prep()
1465 malloc_mutex_unlock(tsdn, gctx->lock); in prof_dump_gctx_prep()
1474 prof_gctx_merge_iter(prof_gctx_tree_t *gctxs, prof_gctx_t *gctx, void *opaque) { in prof_gctx_merge_iter() argument
1478 malloc_mutex_lock(arg->tsdn, gctx->lock); in prof_gctx_merge_iter()
1479 tctx_tree_iter(&gctx->tctxs, NULL, prof_tctx_merge_iter, in prof_gctx_merge_iter()
1481 if (gctx->cnt_summed.curobjs != 0) { in prof_gctx_merge_iter()
1484 malloc_mutex_unlock(arg->tsdn, gctx->lock); in prof_gctx_merge_iter()
1492 prof_gctx_t *gctx; in prof_gctx_finish() local
1500 while ((gctx = gctx_tree_first(gctxs)) != NULL) { in prof_gctx_finish()
1501 gctx_tree_remove(gctxs, gctx); in prof_gctx_finish()
1502 malloc_mutex_lock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_finish()
1509 tctx_tree_iter(&gctx->tctxs, next, in prof_gctx_finish()
1513 next = tctx_tree_next(&gctx->tctxs, in prof_gctx_finish()
1515 tctx_tree_remove(&gctx->tctxs, in prof_gctx_finish()
1524 gctx->nlimbo--; in prof_gctx_finish()
1525 if (prof_gctx_should_destroy(gctx)) { in prof_gctx_finish()
1526 gctx->nlimbo++; in prof_gctx_finish()
1527 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_finish()
1528 prof_gctx_try_destroy(tsd, tdata, gctx, tdata); in prof_gctx_finish()
1530 malloc_mutex_unlock(tsd_tsdn(tsd), gctx->lock); in prof_gctx_finish()
1618 prof_dump_gctx(tsdn_t *tsdn, bool propagate_err, prof_gctx_t *gctx, in prof_dump_gctx() argument
1625 malloc_mutex_assert_owner(tsdn, gctx->lock); in prof_dump_gctx()
1628 if ((!opt_prof_accum && gctx->cnt_summed.curobjs == 0) || in prof_dump_gctx()
1629 (opt_prof_accum && gctx->cnt_summed.accumobjs == 0)) { in prof_dump_gctx()
1630 assert(gctx->cnt_summed.curobjs == 0); in prof_dump_gctx()
1631 assert(gctx->cnt_summed.curbytes == 0); in prof_dump_gctx()
1632 assert(gctx->cnt_summed.accumobjs == 0); in prof_dump_gctx()
1633 assert(gctx->cnt_summed.accumbytes == 0); in prof_dump_gctx()
1653 gctx->cnt_summed.curobjs, gctx->cnt_summed.curbytes, in prof_dump_gctx()
1654 gctx->cnt_summed.accumobjs, gctx->cnt_summed.accumbytes)) { in prof_dump_gctx()
1661 if (tctx_tree_iter(&gctx->tctxs, NULL, prof_tctx_dump_iter, in prof_dump_gctx()
1803 prof_gctx_dump_iter(prof_gctx_tree_t *gctxs, prof_gctx_t *gctx, void *opaque) { in prof_gctx_dump_iter() argument
1808 malloc_mutex_lock(arg->tsdn, gctx->lock); in prof_gctx_dump_iter()
1810 if (prof_dump_gctx(arg->tsdn, arg->propagate_err, gctx, &gctx->bt, in prof_gctx_dump_iter()
1812 ret = gctx; in prof_gctx_dump_iter()
1818 malloc_mutex_unlock(arg->tsdn, gctx->lock); in prof_gctx_dump_iter()
1831 } gctx; in prof_dump_prep() local
1840 for (tabind = 0; !ckh_iter(&bt2gctx, &tabind, NULL, &gctx.v);) { in prof_dump_prep()
1841 prof_dump_gctx_prep(tsd_tsdn(tsd), gctx.p, gctxs); in prof_dump_prep()