diff options
Diffstat (limited to 'third_party/nix/src/libexpr')
-rw-r--r-- | third_party/nix/src/libexpr/attr-set.cc | 7 | ||||
-rw-r--r-- | third_party/nix/src/libexpr/attr-set.hh | 4 | ||||
-rw-r--r-- | third_party/nix/src/libexpr/common-eval-args.cc | 2 | ||||
-rw-r--r-- | third_party/nix/src/libexpr/eval.cc | 4 | ||||
-rw-r--r-- | third_party/nix/src/libexpr/eval.hh | 2 | ||||
-rw-r--r-- | third_party/nix/src/libexpr/get-drvs.cc | 2 |
6 files changed, 10 insertions, 11 deletions
diff --git a/third_party/nix/src/libexpr/attr-set.cc b/third_party/nix/src/libexpr/attr-set.cc index 71777c95dc7b..e961156487a9 100644 --- a/third_party/nix/src/libexpr/attr-set.cc +++ b/third_party/nix/src/libexpr/attr-set.cc @@ -49,10 +49,7 @@ void Bindings::merge(Bindings* other) { attributes_.swap(other->attributes_); } -// Allocate a new attribute set, making it visible to the garbage collector. -Bindings* EvalState::allocBindings(size_t _capacity) { - return new (GC) Bindings; -} +Bindings* Bindings::NewGC() { return new (GC) Bindings; } void EvalState::mkAttrs(Value& v, size_t capacity) { if (capacity == 0) { @@ -61,7 +58,7 @@ void EvalState::mkAttrs(Value& v, size_t capacity) { } clearValue(v); v.type = tAttrs; - v.attrs = new (GC) Bindings; + v.attrs = Bindings::NewGC(); nrAttrsets++; nrAttrsInAttrsets += capacity; } diff --git a/third_party/nix/src/libexpr/attr-set.hh b/third_party/nix/src/libexpr/attr-set.hh index 832733365389..caddc6bebd61 100644 --- a/third_party/nix/src/libexpr/attr-set.hh +++ b/third_party/nix/src/libexpr/attr-set.hh @@ -33,6 +33,10 @@ class Bindings { public: typedef absl::btree_map<Symbol, Attr>::iterator iterator; + // Allocate a new attribute set that is visible to the garbage + // collector. + static Bindings* NewGC(); + // Return the number of contained elements. size_t size(); diff --git a/third_party/nix/src/libexpr/common-eval-args.cc b/third_party/nix/src/libexpr/common-eval-args.cc index 1b9db51c6153..2059d5374195 100644 --- a/third_party/nix/src/libexpr/common-eval-args.cc +++ b/third_party/nix/src/libexpr/common-eval-args.cc @@ -33,7 +33,7 @@ MixEvalArgs::MixEvalArgs() { } Bindings* MixEvalArgs::getAutoArgs(EvalState& state) { - Bindings* res = state.allocBindings(autoArgs.size()); + Bindings* res = Bindings::NewGC(); for (auto& i : autoArgs) { Value* v = state.allocValue(); if (i.second[0] == 'E') { diff --git a/third_party/nix/src/libexpr/eval.cc b/third_party/nix/src/libexpr/eval.cc index 679d3ca99617..c6804ee1143d 100644 --- a/third_party/nix/src/libexpr/eval.cc +++ b/third_party/nix/src/libexpr/eval.cc @@ -372,7 +372,7 @@ EvalState::EvalState(const Strings& _searchPath, const ref<Store>& store) clearValue(vEmptySet); vEmptySet.type = tAttrs; - vEmptySet.attrs = allocBindings(0); + vEmptySet.attrs = Bindings::NewGC(); createBaseEnv(); } @@ -857,7 +857,7 @@ void ExprAttrs::eval(EvalState& state, Env& env, Value& v) { if (hasOverrides) { Value* vOverrides = v.attrs->find(overrides->first)->second.value; state.forceAttrs(*vOverrides); - Bindings* newBnds = state.allocBindings(/* capacity = */ 0); + Bindings* newBnds = Bindings::NewGC(); for (auto& i : *v.attrs) { // TODO(tazjin): copy constructor? newBnds->push_back(i.second); } diff --git a/third_party/nix/src/libexpr/eval.hh b/third_party/nix/src/libexpr/eval.hh index bc07f9507087..73e35c9b2ce9 100644 --- a/third_party/nix/src/libexpr/eval.hh +++ b/third_party/nix/src/libexpr/eval.hh @@ -258,8 +258,6 @@ class EvalState { Value* allocAttr(Value& vAttrs, const Symbol& name); - [[deprecated]] static Bindings* allocBindings(size_t capacity); - void mkList(Value& v, size_t size); void mkAttrs(Value& v, size_t capacity); void mkThunk_(Value& v, Expr* expr); diff --git a/third_party/nix/src/libexpr/get-drvs.cc b/third_party/nix/src/libexpr/get-drvs.cc index 822bff369938..6d4ad33be063 100644 --- a/third_party/nix/src/libexpr/get-drvs.cc +++ b/third_party/nix/src/libexpr/get-drvs.cc @@ -293,7 +293,7 @@ bool DrvInfo::queryMetaBool(const std::string& name, bool def) { void DrvInfo::setMeta(const std::string& name, Value* v) { getMeta(); Bindings* old = meta; - meta = state->allocBindings(1 + (old != nullptr ? old->size() : 0)); + meta = Bindings::NewGC(); Symbol sym = state->symbols.Create(name); if (old != nullptr) { for (auto i : *old) { |