Update startup list generation using art profiles
Change-Id: I747191eb758e7b5bb5f2d811f56476b7d9d729e4
diff --git a/tools/startup/adb_utils.py b/tools/startup/adb_utils.py
index 976da7c..44f70aa 100755
--- a/tools/startup/adb_utils.py
+++ b/tools/startup/adb_utils.py
@@ -219,7 +219,7 @@
% (profile_path, apk_path, apk_path), device_id)
stdout = subprocess.check_output(cmd).decode('utf-8').strip()
lines = stdout.splitlines()
- classes_and_methods = []
+ classes_and_methods = {}
flags_to_name = { 'H': 'hot', 'S': 'startup', 'P': 'post_startup' }
for line in lines:
flags = { 'hot': False, 'startup': False, 'post_startup': False }
@@ -229,7 +229,8 @@
flags[flag_name] = True
line = line[1:]
assert line.startswith('L')
- classes_and_methods.append({ 'descriptor': line, 'flags': flags })
+ descriptor = line
+ classes_and_methods[descriptor] = flags
return classes_and_methods
def get_screen_off_timeout(device_id=None):
diff --git a/tools/startup/generate_startup_descriptors.py b/tools/startup/generate_startup_descriptors.py
index 5116938..c4fa05a 100755
--- a/tools/startup/generate_startup_descriptors.py
+++ b/tools/startup/generate_startup_descriptors.py
@@ -29,7 +29,7 @@
profile_classes_and_methods, iteration, options)
current_startup_descriptors = \
transform_classes_and_methods_to_r8_startup_descriptors(
- profile_classes_and_methods, options)
+ profile_classes_and_methods)
write_tmp_startup_descriptors(current_startup_descriptors, iteration, options)
new_startup_descriptors = add_r8_startup_descriptors(
startup_descriptors, current_startup_descriptors)
@@ -168,13 +168,13 @@
print('Unrecognized line in logcat: %s' % line)
def transform_classes_and_methods_to_r8_startup_descriptors(
- classes_and_methods, options):
- startup_descriptors = []
- for class_or_method in classes_and_methods:
- descriptor = class_or_method.get('descriptor')
- flags = class_or_method.get('flags')
- if should_include_startup_descriptor(descriptor, flags, options):
- startup_descriptors.append(descriptor)
+ classes_and_methods):
+ startup_descriptors = {}
+ for startup_descriptor, flags in classes_and_methods.items():
+ startup_descriptors[startup_descriptor] = {
+ 'conditional_startup': False,
+ 'post_startup': flags['post_startup']
+ }
return startup_descriptors
def add_r8_startup_descriptors(old_startup_descriptors, startup_descriptors_to_add):
@@ -258,15 +258,14 @@
def write_tmp_profile_classes_and_methods(
profile_classes_and_methods, iteration, options):
def item_to_string(item):
- descriptor = item.get('descriptor')
- flags = item.get('flags')
+ (descriptor, flags) = item
return '%s%s%s%s' % (
'H' if flags.get('hot') else '',
'S' if flags.get('startup') else '',
'P' if flags.get('post_startup') else '',
descriptor)
write_tmp_textual_artifact(
- profile_classes_and_methods,
+ profile_classes_and_methods.items(),
iteration,
options,
'profile.txt',