diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2010-04-15T00·37+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2010-04-15T00·37+0000 |
commit | 04c4bd3624b094043ff0f2410c1e376a51f457f7 (patch) | |
tree | 0ff3c39628ceeb26af33f2b461d84a13db9aa561 /src/libexpr/get-drvs.cc | |
parent | e41b5828db0c154e4a3f0ed6299a987fde5bc03f (diff) |
* Store lists as lists of pointers to values rather than as lists of
values. This improves sharing and gives another speed up. Evaluation of the NixOS system attribute is now almost 7 times faster than the old evaluator.
Diffstat (limited to 'src/libexpr/get-drvs.cc')
-rw-r--r-- | src/libexpr/get-drvs.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libexpr/get-drvs.cc b/src/libexpr/get-drvs.cc index 3994701924ab..6964e3e3b71f 100644 --- a/src/libexpr/get-drvs.cc +++ b/src/libexpr/get-drvs.cc @@ -48,7 +48,7 @@ MetaInfo DrvInfo::queryMetaInfo(EvalState & state) const } else if (i->second.type == tList) { value.type = MetaValue::tpStrings; for (unsigned int j = 0; j < i->second.list.length; ++j) - value.stringValues.push_back(state.forceStringNoCtx(i->second.list.elems[j])); + value.stringValues.push_back(state.forceStringNoCtx(*i->second.list.elems[j])); } else continue; meta[i->first] = value; } @@ -206,8 +206,8 @@ static void getDerivations(EvalState & state, Value & vIn, startNest(nest, lvlDebug, format("evaluating list element")); string pathPrefix2 = addToPath(pathPrefix, (format("%1%") % n).str()); - if (getDerivation(state, v.list.elems[n], pathPrefix2, drvs, done)) - getDerivations(state, v.list.elems[n], pathPrefix2, autoArgs, drvs, done); + if (getDerivation(state, *v.list.elems[n], pathPrefix2, drvs, done)) + getDerivations(state, *v.list.elems[n], pathPrefix2, autoArgs, drvs, done); } } |