changeset 22764:40a8dedf1554

mx microbench: add support external JMH jars using the --jar argument.
author Josef Eisl <josef.eisl@jku.at>
date Tue, 06 Oct 2015 16:51:30 +0200
parents 948369884428
children a11240648dc3
files mx.graal/mx_graal.py
diffstat 1 files changed, 26 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/mx.graal/mx_graal.py	Tue Oct 06 17:58:23 2015 +0200
+++ b/mx.graal/mx_graal.py	Tue Oct 06 16:51:30 2015 +0200
@@ -137,6 +137,11 @@
 # depend on the JMH library).
 def microbench(args):
     """run JMH microbenchmark projects"""
+    parser = ArgumentParser(prog='mx microbench', description=microbench.__doc__,
+                            usage="%(prog)s [command options|VM options] [-- [JMH options]]")
+    parser.add_argument('--jar', help='Explicitly specify micro-benchmark location')
+    known_args, args = parser.parse_known_args(args)
+
     vmArgs, jmhArgs = mx.extract_VM_args(args, useDoubleDash=True)
     if isJVMCIEnabled(get_vm()) and  '-XX:-UseJVMCIClassLoader' not in vmArgs:
         vmArgs = ['-XX:-UseJVMCIClassLoader'] + vmArgs
@@ -156,22 +161,29 @@
             except ValueError:
                 pass
 
-    # default to -f1 if not specified otherwise
-    if not containsF:
-        jmhArgs += ['-f1']
+    if known_args.jar:
+        # use the specified jar
+        args = ['-jar', known_args.jar]
+        if not forking:
+            args += vmArgs
+    else:
+        # default to -f1 if not specified otherwise
+        if not containsF:
+            jmhArgs += ['-f1']
 
-    # find all projects with a direct JMH dependency
-    jmhProjects = []
-    for p in mx.projects_opt_limit_to_suites():
-        if 'JMH' in [x.name for x in p.deps]:
-            jmhProjects.append(p.name)
-    cp = mx.classpath(jmhProjects)
+        # find all projects with a direct JMH dependency
+        jmhProjects = []
+        for p in mx.projects_opt_limit_to_suites():
+            if 'JMH' in [x.name for x in p.deps]:
+                jmhProjects.append(p.name)
+        cp = mx.classpath(jmhProjects)
 
-    # execute JMH runner
-    args = ['-cp', cp]
-    if not forking:
-        args += vmArgs
-    args += ['org.openjdk.jmh.Main']
+        # execute JMH runner
+        args = ['-cp', cp]
+        if not forking:
+            args += vmArgs
+        args += ['org.openjdk.jmh.Main']
+
     if forking:
         jdk = get_jvmci_jdk()
         jvm = get_vm()