* Cache parse trees to prevent repeated parsing of imported Nix
expressions.
This commit is contained in:
		
							parent
							
								
									3d94be61ea
								
							
						
					
					
						commit
						55e207b2dc
					
				
					 3 changed files with 10 additions and 7 deletions
				
			
		|  | @ -272,7 +272,14 @@ void EvalState::cloneAttrs(Value & src, Value & dst) | |||
| void EvalState::evalFile(const Path & path, Value & v) | ||||
| { | ||||
|     startNest(nest, lvlTalkative, format("evaluating file `%1%'") % path); | ||||
|     Expr e = parseExprFromFile(*this, path); | ||||
| 
 | ||||
|     Expr e = parseTrees.get(toATerm(path)); | ||||
| 
 | ||||
|     if (!e) { | ||||
|         e = parseExprFromFile(*this, path); | ||||
|         parseTrees.set(toATerm(path), e); | ||||
|     } | ||||
|      | ||||
|     try { | ||||
|         eval(e, v); | ||||
|     } catch (Error & e) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue