|  | #!/usr/bin/env python3 | 
|  | # Copyright (c) 2017, 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 utils | 
|  |  | 
|  | import optparse | 
|  | import sys | 
|  | import toolhelper | 
|  |  | 
|  |  | 
|  | def ParseOptions(argv): | 
|  | parser = optparse.OptionParser(usage='%prog [options] -- [D8 options]') | 
|  | parser.add_option('-c', | 
|  | '--commit-hash', | 
|  | '--commit_hash', | 
|  | help='Commit hash of D8 to use.', | 
|  | default=None) | 
|  | parser.add_option('--debug-agent', | 
|  | '--debug_agent', | 
|  | help='Enable Java debug agent and suspend compilation', | 
|  | default=False, | 
|  | action='store_true') | 
|  | parser.add_option('--disable-assertions', | 
|  | '--disable_assertions', | 
|  | help='Disable assertions when running', | 
|  | default=False, | 
|  | action='store_true') | 
|  | parser.add_option('--print-runtimeraw', | 
|  | '--print_runtimeraw', | 
|  | metavar='BENCHMARKNAME', | 
|  | help='Print the line \'<BENCHMARKNAME>(RunTimeRaw):' + | 
|  | ' <elapsed> ms\' at the end where <elapsed> is' + | 
|  | ' the elapsed time in milliseconds.') | 
|  | parser.add_option('--no-build', | 
|  | '--no_build', | 
|  | help='Do not build D8', | 
|  | default=False, | 
|  | action='store_true') | 
|  | parser.add_option('--version', help='Version of D8 to use.', default=None) | 
|  | parser.add_option('--tag', help='Tag of D8 to use.', default=None) | 
|  | return parser.parse_args(argv) | 
|  |  | 
|  |  | 
|  | def main(argv): | 
|  | (options, args) = ParseOptions(sys.argv) | 
|  | d8_args = args[1:] | 
|  | time_consumer = lambda duration: print_duration(duration, options) | 
|  | return toolhelper.run('d8', | 
|  | d8_args, | 
|  | build=not options.no_build, | 
|  | debug_agent=options.debug_agent, | 
|  | disable_assertions=options.disable_assertions, | 
|  | jar=utils.find_r8_jar_from_options(options), | 
|  | main='com.android.tools.r8.D8', | 
|  | time_consumer=time_consumer) | 
|  |  | 
|  |  | 
|  | def print_duration(duration, options): | 
|  | benchmark_name = options.print_runtimeraw | 
|  | if benchmark_name: | 
|  | print('%s-Total(RunTimeRaw): %s ms' % (benchmark_name, duration)) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(main(sys.argv[1:])) |