forked from OSchip/llvm-project
				
			[opt-viewer] Unique across the different jobs as well
llvm-svn: 293264
This commit is contained in:
		
							parent
							
								
									4f075e3c3e
								
							
						
					
					
						commit
						41cf9b271c
					
				| 
						 | 
					@ -308,33 +308,20 @@ def _render_file(source_dir, output_dir, entry):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def gather_results(pool, filenames):
 | 
					def gather_results(pool, filenames):
 | 
				
			||||||
    all_remarks = dict()
 | 
					 | 
				
			||||||
    remarks = pool.map(get_remarks, filenames)
 | 
					    remarks = pool.map(get_remarks, filenames)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def merge_dicts(dicts):
 | 
					    def merge_file_remarks(file_remarks_job, all_remarks, merged):
 | 
				
			||||||
        ''' Takes an iterable of dicts and merges them into
 | 
					        for filename, d in file_remarks_job.iteritems():
 | 
				
			||||||
            a single dict.  Nested dicts are merged as well.
 | 
					            for line, remarks in d.iteritems():
 | 
				
			||||||
        >>> merge_dicts([ {'a': [3], }, {'a': [4], }, {'b': [6] }])
 | 
					                for remark in remarks:
 | 
				
			||||||
        {'a': [3,4,], 'b': [6]}
 | 
					                    if remark.key not in all_remarks:
 | 
				
			||||||
        >>> merge_dicts([ {'a': {'q': [6,3], 'f': [30],}, }, {'a': {'f': [4,10]}, }, {'b': [6] }])
 | 
					                        merged[filename][line].append(remark)
 | 
				
			||||||
        {'a': [{'q': [6,3]}, {'f': [4,10,30]}], 'b': [6]}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        '''
 | 
					    all_remarks = dict()
 | 
				
			||||||
        merged = defaultdict(functools.partial(defaultdict, list))
 | 
					    file_remarks = defaultdict(functools.partial(defaultdict, list))
 | 
				
			||||||
 | 
					    for _, all_remarks_job, file_remarks_job in remarks:
 | 
				
			||||||
        for k, v in itertools.chain(*[d.iteritems() for d in dicts]):
 | 
					        merge_file_remarks(file_remarks_job, all_remarks, file_remarks)
 | 
				
			||||||
            for k_, v_ in v.items():
 | 
					        all_remarks.update(all_remarks_job)
 | 
				
			||||||
                merged[k][k_] += v_
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return merged
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    file_remark_dicts = [entry[2] for entry in remarks]
 | 
					 | 
				
			||||||
    # merge the list of remarks at each line of each file
 | 
					 | 
				
			||||||
    file_remarks = merge_dicts(file_remark_dicts)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # merge individual 'all_remark' results:
 | 
					 | 
				
			||||||
    for _, all_rem, _ in remarks:
 | 
					 | 
				
			||||||
        all_remarks.update(all_rem)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Remark.max_hotness = max(entry[0] for entry in remarks)
 | 
					    Remark.max_hotness = max(entry[0] for entry in remarks)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue