| #!/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:])) |