| 518 | } |
| 519 | |
| 520 | void |
| 521 | prof_free_sampled_object(tsd_t *tsd, const void *ptr, size_t usize, |
| 522 | prof_tctx_t *tctx) { |
| 523 | malloc_mutex_lock(tsd_tsdn(tsd), tctx->tdata->lock); |
| 524 | |
| 525 | assert(tctx->cnts.curobjs > 0); |
| 526 | assert(tctx->cnts.curbytes >= usize); |
| 527 | tctx->cnts.curobjs--; |
| 528 | tctx->cnts.curbytes -= usize; |
| 529 | |
| 530 | prof_try_log(tsd, ptr, usize, tctx); |
| 531 | |
| 532 | if (prof_tctx_should_destroy(tsd_tsdn(tsd), tctx)) { |
| 533 | prof_tctx_destroy(tsd, tctx); |
| 534 | } else { |
| 535 | malloc_mutex_unlock(tsd_tsdn(tsd), tctx->tdata->lock); |
| 536 | } |
| 537 | } |
| 538 | |
| 539 | void |
| 540 | bt_init(prof_bt_t *bt, void **vec) { |
no test coverage detected