diff options
author | eldritch horrors <pennae@lix.systems> | 2024-07-20 21:05:19 +0200 |
---|---|---|
committer | eldritch horrors <pennae@lix.systems> | 2024-07-22 19:01:40 +0000 |
commit | 472ff1b8338fe277a00fe20483bd74ec0d38cae8 (patch) | |
tree | 99640d7c25216a5bbe0b21cb5aa96a45aab808b3 /src/libstore/build/entry-points.cc | |
parent | 7bf1aff44a302ac66526ee27e3f70b28375ac68d (diff) |
libstore: keep Goal errors as unique_ptrs
Error is pretty large, and most goals do not fail. this alone more than
halves the size of Goal on x86_64-linux, from 720 bytes down to 344. in
derived classes the difference is not as dramatic, but even the largest
derived class (`LocalDerivationGoal`) loses almost 20% of its footprint
Change-Id: Ifda8f94c81b6566eeb3e52d55d9796ec40c7bce8
Diffstat (limited to 'src/libstore/build/entry-points.cc')
-rw-r--r-- | src/libstore/build/entry-points.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libstore/build/entry-points.cc b/src/libstore/build/entry-points.cc index d4bead28e..67236bb39 100644 --- a/src/libstore/build/entry-points.cc +++ b/src/libstore/build/entry-points.cc @@ -22,7 +22,7 @@ void Store::buildPaths(const std::vector<DerivedPath> & reqs, BuildMode buildMod if (ex) logError(i->ex->info()); else - ex = std::move(i->ex); + ex = std::move(*i->ex); } if (i->exitCode != Goal::ecSuccess) { if (auto i2 = dynamic_cast<DerivationGoal *>(i.get())) |