Skip to content

Commit 8934c1e

Browse files
committed
make it easier to pass arguments to the python launcher or the JVM when running benchmarks
1 parent 68fba9b commit 8934c1e

File tree

1 file changed

+33
-23
lines changed

1 file changed

+33
-23
lines changed

mx.graalpython/mx_graalpython_benchmark.py

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,10 @@ def run(self, cwd, args):
260260
"-Dpython.home=%s" % join(SUITE.dir, "graalpython"),
261261
"com.oracle.graal.python.shell.GraalPythonMain"
262262
]
263+
for a in args[:]:
264+
if a.startswith("-D") or a.startswith("-XX"):
265+
vm_args.insert(0, a)
266+
args.remove(a)
263267
cmd = truffle_options + vm_args + extra_polyglot_args + args
264268

265269
host_vm = self.host_vm()
@@ -361,31 +365,37 @@ def run(self, benchmarks, bm_suite_args):
361365
return results
362366

363367
def postprocess_run_args(self, run_args):
364-
parser = argparse.ArgumentParser(add_help=False)
365-
parser.add_argument("-i", default=None)
366-
parser.add_argument("--cpusampler", action="store_true")
367-
parser.add_argument("--memtracer", action="store_true")
368-
parser.add_argument("-dump", action="store_true")
369-
args, remaining = parser.parse_known_args(run_args)
370-
371368
vm_options = []
372-
if args.cpusampler:
373-
vm_options.append("--cpusampler")
374-
if args.memtracer:
375-
vm_options.append("--memtracer")
376-
if args.dump:
377-
vm_options.append("-dump")
378-
379-
if args.i:
380-
if args.i.isdigit():
381-
return vm_options, (["-i", args.i] + remaining)
382-
if args.i == "-1":
383-
return vm_options, remaining
384-
else:
369+
remaining = []
370+
i = 0
371+
372+
while i < len(run_args):
373+
arg = run_args[i]
374+
if not arg.startswith("-"):
375+
remaining = run_args[i:]
376+
break
377+
elif arg.startswith("-i"):
378+
if len(run_args) >= i and run_args[i + 1] == "-1":
379+
pass
380+
else:
381+
remaining = run_args[i:]
382+
break
383+
else:
384+
vm_options.append(arg)
385+
i += 1
386+
387+
if not (remaining and remaining[0] == "-i"):
385388
iterations = DEFAULT_ITERATIONS + self.getExtraIterationCount(DEFAULT_ITERATIONS)
386-
return vm_options, (["-i", str(iterations)] + remaining)
389+
remaining = ["-i", str(iterations)] + remaining
390+
391+
return vm_options, remaining
392+
393+
def createCommandLineArgs(self, benchmarks, bmSuiteArgs):
394+
return self.createVmCommandLineArgs(benchmarks, bmSuiteArgs)
387395

388-
def createVmCommandLineArgs(self, benchmarks, run_args):
396+
def createVmCommandLineArgs(self, benchmarks, bmSuiteArgs):
397+
vm_args = self.vmArgs(bmSuiteArgs)
398+
run_args = self.runArgs(bmSuiteArgs)
389399
if not benchmarks or len(benchmarks) != 1:
390400
mx.abort("Please run a specific benchmark (mx benchmark {}:<benchmark-name>) or all the benchmarks "
391401
"(mx benchmark {}:*)".format(self.name(), self.name()))
@@ -412,7 +422,7 @@ def createVmCommandLineArgs(self, benchmarks, run_args):
412422
run_args += self._benchmarks[benchmark]
413423
vm_options, run_args = self.postprocess_run_args(run_args)
414424
cmd_args.extend(run_args)
415-
return vm_options + cmd_args
425+
return vm_options + vm_args + cmd_args
416426

417427
def benchmarkList(self, bm_suite_args):
418428
return self._benchmarks.keys()

0 commit comments

Comments
 (0)