bc->be = be; bc->bst = 0; bc->subctx = 0;
if (!tvec_benchprep(tv, be->bst, BTF_INDIRECT))
{ bc->bst = *be->bst; bc->dflt_target = bc->bst->target_s; }
- if (subenv && subenv->ctxsz) bc->subctx = x_alloc(tv->a, subenv->ctxsz);
- if (subenv && subenv->setup) subenv->setup(tv, subenv, bc, bc->subctx);
+ if (subenv && subenv->ctxsz)
+ bc->subctx = pool_alloc(tv->p_group, subenv->ctxsz);
+ if (subenv && subenv->setup)
+ subenv->setup(tv, subenv, bc, bc->subctx);
}
/* --- @tvec_benchfindvar@, @setvar@ --- *
/* Tear down any subsidiary environment. */
if (subenv && subenv->teardown) subenv->teardown(tv, bc->subctx);
- if (bc->subctx) x_free(tv->a, bc->subctx);
/* If the benchmark state was temporary, then dispose of it. */
if (bc->bst) {