old_contents: #!/usr/bin/env python
  # Copyright 2014 the V8 project authors. 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 find_depot_tools
  import sys
  
  find_depot_tools.add_depot_tools_to_path()
  
  from git_cl import Changelist
  
  BOTS = {
    '--arm32': 'v8_arm32_perf_try',
    '--linux32': 'v8_linux32_perf_try',
    '--linux64': 'v8_linux64_perf_try',
    '--linux64_haswell': 'v8_linux64_haswell_perf_try',
  }
  
  DEFAULT_BOTS = [
    'v8_linux32_perf_try',
    'v8_linux64_haswell_perf_try',
  ]
  
  def main():
    parser = argparse.ArgumentParser(description='')
    parser.add_argument("benchmarks", nargs="+", help="The benchmarks to run.")
    for option in sorted(BOTS):
      parser.add_argument(
          option, dest='bots', action='append_const', const=BOTS[option],
          help='Add %s trybot.' % BOTS[option])
    options = parser.parse_args()
    if not options.bots:
      print 'No trybots specified. Using default %s.' % ','.join(DEFAULT_BOTS)
      options.bots = DEFAULT_BOTS
  
    cl = Changelist()
    if not cl.GetIssue():
      print 'Need to upload first'
      return 1
  
    props = cl.GetIssueProperties()
    if props.get('closed'):
      print 'Cannot send tryjobs for a closed CL'
      return 1
  
    if props.get('private'):
      print 'Cannot use trybots with private issue'
      return 1
  
    if not options.benchmarks:
      print 'Please specify the benchmarks to run as arguments.'
      return 1
  
    masters = {
      'internal.client.v8': dict((b, options.benchmarks) for b in options.bots),
    }
    cl.RpcServer().trigger_distributed_try_jobs(
        cl.GetIssue(), cl.GetMostRecentPatchset(), cl.GetBranch(),
        False, None, masters)
    return 0
  
  if __name__ == "__main__":  # pragma: no cover
    sys.exit(main())
  
new_contents: #!/usr/bin/env python
  # Copyright 2014 the V8 project authors. 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 find_depot_tools
  import sys
  
  find_depot_tools.add_depot_tools_to_path()
  
  from git_cl import Changelist
  
  BOTS = {
    '--arm32': 'v8_arm32_perf_try',
    '--linux32': 'v8_linux32_perf_try',
    '--linux64': 'v8_linux64_perf_try',
    '--linux64_haswell': 'v8_linux64_haswell_perf_try',
    '--nexus5': 'v8_nexus5_perf_try',
    '--nexus7': 'v8_nexus7_perf_try',
    '--nexus9': 'v8_nexus9_perf_try',
    '--nexus10': 'v8_nexus10_perf_try',
  }
  
  DEFAULT_BOTS = [
    'v8_linux32_perf_try',
    'v8_linux64_haswell_perf_try',
  ]
  
  def main():
    parser = argparse.ArgumentParser(description='')
    parser.add_argument("benchmarks", nargs="+", help="The benchmarks to run.")
    for option in sorted(BOTS):
      parser.add_argument(
          option, dest='bots', action='append_const', const=BOTS[option],
          help='Add %s trybot.' % BOTS[option])
    options = parser.parse_args()
    if not options.bots:
      print 'No trybots specified. Using default %s.' % ','.join(DEFAULT_BOTS)
      options.bots = DEFAULT_BOTS
  
    cl = Changelist()
    if not cl.GetIssue():
      print 'Need to upload first'
      return 1
  
    props = cl.GetIssueProperties()
    if props.get('closed'):
      print 'Cannot send tryjobs for a closed CL'
      return 1
  
    if props.get('private'):
      print 'Cannot use trybots with private issue'
      return 1
  
    if not options.benchmarks:
      print 'Please specify the benchmarks to run as arguments.'
      return 1
  
    masters = {
      'internal.client.v8': dict((b, options.benchmarks) for b in options.bots),
    }
    cl.RpcServer().trigger_distributed_try_jobs(
        cl.GetIssue(), cl.GetMostRecentPatchset(), cl.GetBranch(),
        False, None, masters)
    return 0
  
  if __name__ == "__main__":  # pragma: no cover
    sys.exit(main())
  
subject: Add android perf trybots.