Mercurial > hg > graal-compiler
changeset 15021:9dcd5407a603
added support for overriding/complementing JMH arguments in jmh command with a JSON string
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 08 Apr 2014 16:04:59 +0200 |
parents | 22390f39dfb1 |
children | bceb077143ae 89db561851d1 |
files | mx/mx_graal.py |
diffstat | 1 files changed, 25 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/mx/mx_graal.py Tue Apr 08 15:06:24 2014 +0200 +++ b/mx/mx_graal.py Tue Apr 08 16:04:59 2014 +0200 @@ -1349,9 +1349,24 @@ """run the JMH_BENCHMARKS""" # TODO: add option for `mvn clean package' - # TODO: add options to pass through arguments directly to JMH + + vmArgs, benchmarksAndJsons = _extract_VM_args(args) + + benchmarks = [b for b in benchmarksAndJsons if not b.startswith('{')] + jmhArgJsons = [b for b in benchmarksAndJsons if b.startswith('{')] - vmArgs, benchmarks = _extract_VM_args(args) + jmhArgs = { + '-f' : '1', + '-i' : '10', + '-wi' : '10'} + + # e.g. '{"-wi" : 20}' + for j in jmhArgJsons: + try: + jmhArgs.update(json.loads(j)) + except ValueError as e: + mx.abort('error parsing JSON input: {}"\n{}'.format(j, e)) + jmhPath = mx.get_env('JMH_BENCHMARKS', None) if not jmhPath or not exists(jmhPath): mx.abort("$JMH_BENCHMARKS not properly defined: " + str(jmhPath)) @@ -1410,15 +1425,13 @@ (pfx, exe, vm, forkedVmArgs, _) = _parseVmArgs(vmArgs) if pfx: mx.warn("JMH ignores prefix: \"" + pfx + "\"") - mx.run_java( - ['-jar', os.path.join(absoluteMicro, "target", "microbenchmarks.jar"), - "-f", "1", - "-v", "EXTRA" if mx._opts.verbose else "NORMAL", - "-i", "10", "-wi", "10", - "--jvm", exe, - "--jvmArgs", " ".join(["-" + vm] + forkedVmArgs)] + regex, - addDefaultArgs=False, - cwd=jmhPath) + javaArgs = ['-jar', os.path.join(absoluteMicro, "target", "microbenchmarks.jar"), + '--jvm', exe, + '--jvmArgs', ' '.join(["-" + vm] + forkedVmArgs)] + for k, v in jmhArgs.iteritems(): + javaArgs.append(k) + javaArgs.append(str(v)) + mx.run_java(javaArgs + regex, addDefaultArgs=False, cwd=jmhPath) def specjvm2008(args): @@ -1761,7 +1774,7 @@ 'hcfdis': [hcfdis, ''], 'igv' : [igv, ''], 'jdkhome': [print_jdkhome, ''], - 'jmh': [jmh, '[VM options] [filters...]'], + 'jmh': [jmh, '[VM options] [filters|JMH-args-as-json...]'], 'dacapo': [dacapo, '[VM options] benchmarks...|"all" [DaCapo options]'], 'scaladacapo': [scaladacapo, '[VM options] benchmarks...|"all" [Scala DaCapo options]'], 'specjvm2008': [specjvm2008, '[VM options] benchmarks...|"all" [SPECjvm2008 options]'],