OLD | NEW |
1 # Copyright 2017 The Chromium Authors. All rights reserved. | 1 # Copyright 2017 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 """Classes that comprise the data model for binary size analysis. | 4 """Classes that comprise the data model for binary size analysis. |
5 | 5 |
6 The primary classes are Symbol, and SymbolGroup. | 6 The primary classes are Symbol, and SymbolGroup. |
7 | 7 |
8 Description of common properties: | 8 Description of common properties: |
9 * address: The start address of the symbol. | 9 * address: The start address of the symbol. |
10 May be 0 (e.g. for .bss or for SymbolGroups). | 10 May be 0 (e.g. for .bss or for SymbolGroups). |
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 self._padding = sum(s.padding for s in self.IterUniqueSymbols()) | 397 self._padding = sum(s.padding for s in self.IterUniqueSymbols()) |
398 return self._padding | 398 return self._padding |
399 | 399 |
400 @property | 400 @property |
401 def aliases(self): | 401 def aliases(self): |
402 return None | 402 return None |
403 | 403 |
404 def IsGroup(self): | 404 def IsGroup(self): |
405 return True | 405 return True |
406 | 406 |
| 407 def SetName(self, full_name, template_name=None, name=None): |
| 408 self.full_name = full_name |
| 409 self.template_name = full_name if template_name is None else template_name |
| 410 self.name = full_name if name is None else name |
| 411 |
407 def IterUniqueSymbols(self): | 412 def IterUniqueSymbols(self): |
408 """Yields all symbols, but only one from each alias group.""" | 413 """Yields all symbols, but only one from each alias group.""" |
409 seen_aliases_lists = set() | 414 seen_aliases_lists = set() |
410 for s in self: | 415 for s in self: |
411 if not s.aliases: | 416 if not s.aliases: |
412 yield s | 417 yield s |
413 elif id(s.aliases) not in seen_aliases_lists: | 418 elif id(s.aliases) not in seen_aliases_lists: |
414 seen_aliases_lists.add(id(s.aliases)) | 419 seen_aliases_lists.add(id(s.aliases)) |
415 yield s | 420 yield s |
416 | 421 |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 | 846 |
842 | 847 |
843 def _ExtractSuffixAfterSeparator(string, separator, count): | 848 def _ExtractSuffixAfterSeparator(string, separator, count): |
844 prev_idx = len(string) + 1 | 849 prev_idx = len(string) + 1 |
845 for _ in xrange(count): | 850 for _ in xrange(count): |
846 idx = string.rfind(separator, 0, prev_idx - 1) | 851 idx = string.rfind(separator, 0, prev_idx - 1) |
847 if idx < 0: | 852 if idx < 0: |
848 break | 853 break |
849 prev_idx = idx | 854 prev_idx = idx |
850 return string[:prev_idx] | 855 return string[:prev_idx] |
OLD | NEW |