diff --git a/src/v8/gypfiles/run-tests-legacy.py b/src/v8/gypfiles/run-tests-legacy.py
new file mode 100755
index 0000000..f1ea478
--- /dev/null
+++ b/src/v8/gypfiles/run-tests-legacy.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# Copyright 2017 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.
+
+"""
+Legacy test-runner wrapper supporting a product of multiple architectures and
+modes.
+"""
+
+import argparse
+import itertools
+from os.path import abspath, dirname, join
+import subprocess
+import sys
+
+BASE_DIR = dirname(dirname(abspath(__file__)))
+RUN_TESTS = join(BASE_DIR, 'tools', 'run-tests.py')
+
+def main():
+  parser = argparse.ArgumentParser(description='Legacy test-runner wrapper')
+  parser.add_argument(
+      '--arch', help='Comma-separated architectures to run tests on')
+  parser.add_argument(
+      '--mode', help='Comma-separated modes to run tests on')
+  parser.add_argument(
+      '--arch-and-mode',
+      help='Architecture and mode in the format \'arch.mode\'',
+  )
+
+  args, remaining_args = parser.parse_known_args(sys.argv)
+  if (args.arch or args.mode) and args.arch_and_mode:
+    parser.error('The flags --arch-and-mode and --arch/--mode are exclusive.')
+  arch = (args.arch or 'ia32,x64,arm').split(',')
+  mode = (args.mode or 'release,debug').split(',')
+  if args.arch_and_mode:
+    arch_and_mode = map(
+        lambda am: am.split('.'),
+        args.arch_and_mode.split(','))
+    arch = map(lambda am: am[0], arch_and_mode)
+    mode = map(lambda am: am[1], arch_and_mode)
+
+  ret_code = 0
+  for a, m in itertools.product(arch, mode):
+    ret_code |= subprocess.check_call(
+        [RUN_TESTS] + remaining_args[1:] + ['--arch', a, '--mode', m])
+  return ret_code
+
+if __name__ == '__main__':
+  sys.exit(main())
