From 2c19bd666280c33eb63d3f3b9063b07b62023c9d Mon Sep 17 00:00:00 2001 From: Kane York Date: Sat, 12 Sep 2020 08:09:18 -0700 Subject: refactor(3p/tvix): convert NixList usage to shared_ptr Starting to reclaim memory. Fairly simple mechanical replacement. Change-Id: I6b4c5c5596729470d1a049eba61e69e8097decf4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1971 Tested-by: BuildkiteCI Reviewed-by: glittershark --- third_party/nix/src/libexpr/eval.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'third_party/nix/src/libexpr/eval.cc') diff --git a/third_party/nix/src/libexpr/eval.cc b/third_party/nix/src/libexpr/eval.cc index 28ae46bdfd8c..2a0aba1a4c8b 100644 --- a/third_party/nix/src/libexpr/eval.cc +++ b/third_party/nix/src/libexpr/eval.cc @@ -598,15 +598,15 @@ Env& EvalState::allocEnv(size_t size) { return *env; } -void EvalState::mkList(Value& v, NixList* list) { +void EvalState::mkList(Value& v, std::shared_ptr list) { + nrListElems += list->size(); clearValue(v); v.type = tList; v.list = list; - nrListElems += list->size(); } void EvalState::mkList(Value& v, size_t size) { - EvalState::mkList(v, new NixList(size)); + EvalState::mkList(v, std::make_shared(size)); } unsigned long nrThunks = 0; @@ -1224,7 +1224,7 @@ void ExprOpConcatLists::eval(EvalState& state, Env& env, Value& v) { void EvalState::concatLists(Value& v, const NixList& lists, const Pos& pos) { nrListConcats++; - auto outlist = new NixList(); + auto outlist = std::make_shared(); for (Value* list : lists) { forceList(*list, pos); @@ -1816,8 +1816,8 @@ size_t valueSize(const Value& v) { } break; case tList: - if (seenLists.find(v.list) == seenLists.end()) { - seenLists.insert(v.list); + if (seenLists.find(v.list.get()) == seenLists.end()) { + seenLists.insert(v.list.get()); sz += v.listSize() * sizeof(Value*); for (const Value* v : *v.list) { sz += doValue(*v); -- cgit 1.4.1