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 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'src/libexpr/eval.cc') 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); } -- cgit 1.4.1