Skip to content

Commit

Permalink
SuperSize: Ignore java symbols in diffs when paths change.
Browse files Browse the repository at this point in the history
This was my intention before, but was buggy :(.

Change-Id: I307d13e9a30ee021a5943bc085961281b1d83421
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1727772
Commit-Queue: Samuel Huang <huangs@chromium.org>
Reviewed-by: Samuel Huang <huangs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#682730}
  • Loading branch information
Andrew Grieve authored and Commit Bot committed Jul 31, 2019
1 parent 80fd6df commit 786c370
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 13 deletions.
38 changes: 26 additions & 12 deletions tools/binary_size/libsupersize/diff_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ def _CreateSizeInfo(aliases=None):
section_sizes = {'.text': 100, '.bss': 40}
TEXT = models.SECTION_TEXT
symbols = [
_MakeSym(TEXT, 10, 'a'),
_MakeSym(TEXT, 20, 'a'),
_MakeSym(models.SECTION_DEX_METHOD, 10, 'a', 'com.Foo#bar()'),
_MakeSym(TEXT, 20, 'a', '.Lfoo'),
_MakeSym(TEXT, 30, 'b'),
_MakeSym(TEXT, 40, 'b'),
_MakeSym(TEXT, 50, 'b'),
Expand Down Expand Up @@ -155,6 +155,7 @@ def testNumberNormalization(self):
self.assertEquals(0, d.raw_symbols.size)

def testChangedParams(self):
# Ensure that params changes match up so long as path doesn't change.
size_info1 = _CreateSizeInfo()
size_info1.raw_symbols[0].full_name = 'Foo()'
size_info1.raw_symbols[0].name = 'Foo'
Expand All @@ -165,7 +166,28 @@ def testChangedParams(self):
self.assertEquals((0, 0, 0), d.raw_symbols.CountsByDiffStatus()[1:])
self.assertEquals(0, d.raw_symbols.size)

def testChangedPaths(self):
def testChangedPaths_Native(self):
# Ensure that non-globally-unique symbols are not matched when path changes.
size_info1 = _CreateSizeInfo()
size_info2 = _CreateSizeInfo()
size_info2.raw_symbols[1].object_path = 'asdf'
d = diff.Diff(size_info1, size_info2)
self.assertEquals((0, 1, 1), d.raw_symbols.CountsByDiffStatus()[1:])
self.assertEquals(0, d.raw_symbols.size)

def testChangedPaths_StringLiterals(self):
# Ensure that string literals are not matched up.
size_info1 = _CreateSizeInfo()
size_info1.raw_symbols[0].full_name = models.STRING_LITERAL_NAME
size_info2 = _CreateSizeInfo()
size_info2.raw_symbols[0].full_name = models.STRING_LITERAL_NAME
size_info2.raw_symbols[0].object_path = 'asdf'
d = diff.Diff(size_info1, size_info2)
self.assertEquals((0, 1, 1), d.raw_symbols.CountsByDiffStatus()[1:])
self.assertEquals(0, d.raw_symbols.size)

def testChangedPaths_Java(self):
# Ensure that Java symbols are matched up.
size_info1 = _CreateSizeInfo()
size_info2 = _CreateSizeInfo()
size_info2.raw_symbols[0].object_path = 'asdf'
Expand All @@ -174,6 +196,7 @@ def testChangedPaths(self):
self.assertEquals(0, d.raw_symbols.size)

def testChangedPaths_ChangedParams(self):
# Ensure that path changes are not matched when params also change.
size_info1 = _CreateSizeInfo()
size_info1.raw_symbols[0].full_name = 'Foo()'
size_info1.raw_symbols[0].name = 'Foo'
Expand All @@ -185,15 +208,6 @@ def testChangedPaths_ChangedParams(self):
self.assertEquals((0, 1, 1), d.raw_symbols.CountsByDiffStatus()[1:])
self.assertEquals(0, d.raw_symbols.size)

def testChangedPaths_StringLiterals(self):
size_info1 = _CreateSizeInfo()
size_info1.raw_symbols[0].full_name = models.STRING_LITERAL_NAME
size_info2 = _CreateSizeInfo()
size_info2.raw_symbols[0].full_name = models.STRING_LITERAL_NAME
size_info2.raw_symbols[0].object_path = 'asdf'
d = diff.Diff(size_info1, size_info2)
self.assertEquals((0, 1, 1), d.raw_symbols.CountsByDiffStatus()[1:])
self.assertEquals(0, d.raw_symbols.size)


if __name__ == '__main__':
Expand Down
2 changes: 1 addition & 1 deletion tools/binary_size/libsupersize/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ def IsNameUnique(self):
return not (self.IsStringLiteral() or # "string literal"
self.IsOverhead() or # "Overhead: APK File"
self.full_name.startswith('*') or # "** outlined symbol"
'.' in self.full_name) # ".L__unnamed_1195"
(self.IsNative() and '.' in self.full_name)) # ".L__unnamed_11"

def IterLeafSymbols(self):
yield self
Expand Down

0 comments on commit 786c370

Please sign in to comment.