Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: build/android/pylib/symbols/elf_symbolizer.py

Issue 399683004: binarysize tool: Cleaning up some progress output. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added empty line Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tools/binary_size/run_binary_size_analysis.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import collections 5 import collections
6 import datetime 6 import datetime
7 import logging 7 import logging
8 import multiprocessing 8 import multiprocessing
9 import os 9 import os
10 import posixpath 10 import posixpath
11 import Queue 11 import Queue
12 import re 12 import re
13 import subprocess 13 import subprocess
14 import sys 14 import sys
15 import threading 15 import threading
16 import time
16 17
17 18
18 # addr2line builds a possibly infinite memory cache that can exhaust 19 # addr2line builds a possibly infinite memory cache that can exhaust
19 # the computer's memory if allowed to grow for too long. This constant 20 # the computer's memory if allowed to grow for too long. This constant
20 # controls how many lookups we do before restarting the process. 4000 21 # controls how many lookups we do before restarting the process. 4000
21 # gives near peak performance without extreme memory usage. 22 # gives near peak performance without extreme memory usage.
22 ADDR2LINE_RECYCLE_LIMIT = 4000 23 ADDR2LINE_RECYCLE_LIMIT = 4000
23 24
24 25
25 class ELFSymbolizer(object): 26 class ELFSymbolizer(object):
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 a2l.Terminate() 178 a2l.Terminate()
178 179
179 def _CreateNewA2LInstance(self): 180 def _CreateNewA2LInstance(self):
180 assert(len(self._a2l_instances) < self.max_concurrent_jobs) 181 assert(len(self._a2l_instances) < self.max_concurrent_jobs)
181 a2l = ELFSymbolizer.Addr2Line(self) 182 a2l = ELFSymbolizer.Addr2Line(self)
182 self._a2l_instances.append(a2l) 183 self._a2l_instances.append(a2l)
183 return a2l 184 return a2l
184 185
185 def _CreateDisambiguationTable(self): 186 def _CreateDisambiguationTable(self):
186 """ Non-unique file names will result in None entries""" 187 """ Non-unique file names will result in None entries"""
188 start_time = time.time()
189 logging.info('Collecting information about available source files...')
187 self.disambiguation_table = {} 190 self.disambiguation_table = {}
188 191
189 for root, _, filenames in os.walk(self.source_root_path): 192 for root, _, filenames in os.walk(self.source_root_path):
190 for f in filenames: 193 for f in filenames:
191 self.disambiguation_table[f] = os.path.join(root, f) if (f not in 194 self.disambiguation_table[f] = os.path.join(root, f) if (f not in
192 self.disambiguation_table) else None 195 self.disambiguation_table) else None
196 logging.info('Finished collecting information about '
197 'possible files (took %.1f s).',
198 (time.time() - start_time))
193 199
194 200
195 class Addr2Line(object): 201 class Addr2Line(object):
196 """A python wrapper around an addr2line instance. 202 """A python wrapper around an addr2line instance.
197 203
198 The communication with the addr2line process looks as follows: 204 The communication with the addr2line process looks as follows:
199 [STDIN] [STDOUT] (from addr2line's viewpoint) 205 [STDIN] [STDOUT] (from addr2line's viewpoint)
200 > f001111 206 > f001111
201 > f002222 207 > f002222
202 < Symbol::Name(foo, bar) for f001111 208 < Symbol::Name(foo, bar) for f001111
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 self.source_line = source_line 458 self.source_line = source_line
453 # In the case of |inlines|=True, the |inlined_by| points to the outer 459 # In the case of |inlines|=True, the |inlined_by| points to the outer
454 # function inlining the current one (and so on, to form a chain). 460 # function inlining the current one (and so on, to form a chain).
455 self.inlined_by = None 461 self.inlined_by = None
456 self.disambiguated = disambiguated 462 self.disambiguated = disambiguated
457 self.was_ambiguous = was_ambiguous 463 self.was_ambiguous = was_ambiguous
458 464
459 def __str__(self): 465 def __str__(self):
460 return '%s [%s:%d]' % ( 466 return '%s [%s:%d]' % (
461 self.name or '??', self.source_path or '??', self.source_line or 0) 467 self.name or '??', self.source_path or '??', self.source_line or 0)
OLDNEW
« no previous file with comments | « no previous file | tools/binary_size/run_binary_size_analysis.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698