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

Unified Diff: tools/binary_size/libsupersize/function_signature.py

Issue 2880003002: supersize: A few fixes for Android+clang builds (Closed)
Patch Set: rebase Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: tools/binary_size/libsupersize/function_signature.py
diff --git a/tools/binary_size/libsupersize/function_signature.py b/tools/binary_size/libsupersize/function_signature.py
index 199d5147c0c631033b082ae9560c305c868f1def..fbd1e6738f0406a96ce57d7a0aeaaf4c1fb11fe5 100644
--- a/tools/binary_size/libsupersize/function_signature.py
+++ b/tools/binary_size/libsupersize/function_signature.py
@@ -102,12 +102,23 @@ def _StripTemplateArgs(name):
last_right_idx = left_idx
-def _NormalizeTopLevelLambda(name, space_idx, left_paren_idx):
- # cc::{lambda(PaintOp*)#63}::_FUN() -> cc:{lambda#63}()
- paren_idx = name.index('(', space_idx + 1)
- hash_idx = name.rindex('#', paren_idx)
- return (name[:paren_idx] + name[hash_idx:left_paren_idx - 6] +
- name[left_paren_idx:])
+def _NormalizeTopLevelGccLambda(name, left_paren_idx):
+ # cc::{lambda(PaintOp*)#63}::_FUN() -> cc::$lambda#63()
+ left_brace_idx = name.index('{')
+ hash_idx = name.index('#', left_brace_idx + 1)
+ right_brace_idx = name.index('}', hash_idx + 1)
+ number = name[hash_idx + 1:right_brace_idx]
+ return '{}$lambda#{}{}'.format(
+ name[:left_brace_idx], number, name[left_paren_idx:])
+
+
+def _NormalizeTopLevelClangLambda(name, left_paren_idx):
+ # cc::$_21::__invoke() -> cc::$lambda#21()
+ dollar_idx = name.index('$')
+ colon_idx = name.index(':', dollar_idx + 1)
+ number = name[dollar_idx + 2:colon_idx]
+ return '{}$lambda#{}{}'.format(
+ name[:dollar_idx], number, name[left_paren_idx:])
def Parse(name):
@@ -133,7 +144,11 @@ def Parse(name):
if name_no_params.endswith('}::_FUN'):
# Don't use name_no_params in here since prior _idx will be off if
# there was a return value.
- name = _NormalizeTopLevelLambda(name, space_idx, left_paren_idx)
+ name = _NormalizeTopLevelGccLambda(name, left_paren_idx)
+ return Parse(name)
+ elif name_no_params.endswith('::__invoke') and '$' in name_no_params:
+ assert '$_' in name_no_params, 'Surprising lambda: ' + name
+ name = _NormalizeTopLevelClangLambda(name, left_paren_idx)
return Parse(name)
full_name = name[space_idx + 1:]
« no previous file with comments | « tools/binary_size/libsupersize/archive.py ('k') | tools/binary_size/libsupersize/function_signature_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698