From d300b4383dabb007db08c7165fb327c12dbe8e71 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 2 May 2006 21:58:46 +0000 Subject: * Optimise null-ary term builders. Also declare all term builder functions as pure, which might improve performance a bit. --- src/libexpr/eval.cc | 7 ++----- src/libexpr/eval.hh | 1 - 2 files changed, 2 insertions(+), 6 deletions(-) (limited to 'src/libexpr') diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 1ee9da3b9bc8..6d2b20e53946 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -6,8 +6,6 @@ EvalState::EvalState() : normalForms(32768, 50) { - blackHole = makeBlackHole(); - nrEvaluated = nrCached = 0; initNixExprHelpers(); @@ -490,14 +488,14 @@ Expr evalExpr(EvalState & state, Expr e) previously evaluated expressions. */ Expr nf = state.normalForms.get(e); if (nf) { - if (nf == state.blackHole) + if (nf == makeBlackHole()) throw Error("infinite recursion encountered"); state.nrCached++; return nf; } /* Otherwise, evaluate and memoize. */ - state.normalForms.set(e, state.blackHole); + state.normalForms.set(e, makeBlackHole()); try { nf = evalExpr2(state, e); } catch (Error & err) { @@ -536,5 +534,4 @@ void printEvalStats(EvalState & state) % state.nrEvaluated % state.nrCached % ((float) state.nrCached / (float) state.nrEvaluated * 100) % AT_calcAllocatedSize()); - sleep(100); } diff --git a/src/libexpr/eval.hh b/src/libexpr/eval.hh index 54a612b367ef..c881969add69 100644 --- a/src/libexpr/eval.hh +++ b/src/libexpr/eval.hh @@ -29,7 +29,6 @@ struct EvalState DrvRoots drvRoots; DrvHashes drvHashes; /* normalised derivation hashes */ SrcToStore srcToStore; - Expr blackHole; unsigned int nrEvaluated; unsigned int nrCached; -- cgit 1.4.1