1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-25 19:51:00 +01:00

* Caching of parse results for fairer comparisons.

This commit is contained in:
Eelco Dolstra 2007-10-11 20:02:08 +00:00
parent c1179badd5
commit cd9d10d4e3
2 changed files with 8 additions and 1 deletions

View file

@ -41,6 +41,8 @@ struct EvalState
bool cacheTerms; bool cacheTerms;
bool strictMode; bool strictMode;
ATermMap parsings; /* path -> expr mapping */
EvalState(); EvalState();
void addPrimOps(); void addPrimOps();

View file

@ -383,8 +383,13 @@ Expr parseExprFromFile(EvalState & state, Path path)
if (S_ISDIR(st.st_mode)) if (S_ISDIR(st.st_mode))
path = canonPath(path + "/default.nix"); path = canonPath(path + "/default.nix");
Expr cached = state.parsings.get(toATerm(path));
if (cached) return cached;
/* Read and parse the input file. */ /* Read and parse the input file. */
return parse(state, readFile(path).c_str(), path, dirOf(path)); cached = parse(state, readFile(path).c_str(), path, dirOf(path));
state.parsings.set(toATerm(path), cached);
return cached;
} }