* intersectAttrs: optimise for the case where the second set is larger
than the first set. (That's usually the case with callPackage.)
This commit is contained in:
		
							parent
							
								
									532d766c27
								
							
						
					
					
						commit
						7af6a2fd71
					
				
					 1 changed files with 7 additions and 7 deletions
				
			
		|  | @ -789,12 +789,12 @@ static void prim_intersectAttrs(EvalState & state, Value * * args, Value & v) | ||||||
|          |          | ||||||
|     state.mkAttrs(v); |     state.mkAttrs(v); | ||||||
| 
 | 
 | ||||||
|     foreach (Bindings::iterator, i, *args[1]->attrs) { |     foreach (Bindings::iterator, i, *args[0]->attrs) { | ||||||
|         Bindings::iterator j = args[0]->attrs->find(i->first); |         Bindings::iterator j = args[1]->attrs->find(i->first); | ||||||
|         if (j != args[0]->attrs->end()) { |         if (j != args[1]->attrs->end()) { | ||||||
|             Attr & a = (*v.attrs)[i->first]; |             Attr & a = (*v.attrs)[j->first]; | ||||||
|             mkCopy(a.value, i->second.value); |             mkCopy(a.value, j->second.value); | ||||||
|             a.pos = i->second.pos; |             a.pos = j->second.pos; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue