|  | #!/usr/bin/env python | 
|  | # Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file | 
|  | # for details. All rights reserved. Use of this source code is governed by a | 
|  | # BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import argparse | 
|  | import os | 
|  | import sys | 
|  |  | 
|  | import golem | 
|  | import minify_tool | 
|  | import toolhelper | 
|  | import utils | 
|  |  | 
|  | PINNED_R8_JAR = os.path.join(utils.REPO_ROOT, 'third_party/r8/r8.jar') | 
|  | PINNED_PGR8_JAR = os.path.join(utils.REPO_ROOT, 'third_party/r8/r8-pg6.0.1.jar') | 
|  |  | 
|  | def parse_arguments(argv): | 
|  | parser = argparse.ArgumentParser( | 
|  | description = 'Run r8 bootstrap benchmarks.') | 
|  | parser.add_argument('--golem', | 
|  | help = 'Link in third party dependencies.', | 
|  | default = False, | 
|  | action = 'store_true') | 
|  | return parser.parse_args(argv) | 
|  |  | 
|  |  | 
|  | def dex(input, output): | 
|  | return_code = toolhelper.run( | 
|  | 'd8', [ | 
|  | input, | 
|  | '--output', output, | 
|  | '--lib', utils.RT_JAR, | 
|  | '--min-api', '10000', | 
|  | '--no-desugaring', | 
|  | ], | 
|  | debug=False, | 
|  | build=False) | 
|  | if return_code != 0: | 
|  | sys.exit(return_code) | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | options = parse_arguments(sys.argv[1:]) | 
|  | if options.golem: | 
|  | golem.link_third_party() | 
|  | with utils.TempDir() as temp: | 
|  | memory_file = os.path.join(temp, 'memory.dump') | 
|  | r8_output = os.path.join(temp, 'r8.zip') | 
|  | d8_r8_output = os.path.join(temp, 'd8r8.zip') | 
|  | d8_pg_output = os.path.join(temp, 'd8pg.zip') | 
|  |  | 
|  | return_code = minify_tool.minify_tool( | 
|  | input_jar=PINNED_R8_JAR, | 
|  | output_jar=r8_output, | 
|  | debug=False, | 
|  | build=False, | 
|  | track_memory_file=memory_file, | 
|  | benchmark_name="BootstrapR8") | 
|  | if return_code != 0: | 
|  | sys.exit(return_code) | 
|  |  | 
|  | dex(r8_output, d8_r8_output) | 
|  | print "BootstrapR8(CodeSize):", os.path.getsize(r8_output) | 
|  | print "BootstrapR8Dex(CodeSize):", os.path.getsize(d8_r8_output) | 
|  |  | 
|  | dex(PINNED_PGR8_JAR, d8_pg_output) | 
|  | print "BootstrapR8PG(CodeSize):", os.path.getsize(PINNED_PGR8_JAR) | 
|  | print "BootstrapR8PGDex(CodeSize):", os.path.getsize(d8_pg_output) | 
|  |  | 
|  | sys.exit(0) |