comparison mx/mx_graal.py @ 13951:392b6ac8da36

Allow using run_java without the arguments from -J -Ja -Jp. Factor out the argument processing of mx_graal.vm and use it to pass tested-vm args down through the jmh harness
author Bernhard Urban <bernhard.urban@jku.at>
date Thu, 13 Feb 2014 17:59:27 +0100
parents f694daada5bf
children b076b5c13c3f
comparison
equal deleted inserted replaced
13950:35783e78eaef 13951:392b6ac8da36
710 710
711 def vmfg(args): 711 def vmfg(args):
712 """run the fastdebug build of VM selected by the '--vm' option""" 712 """run the fastdebug build of VM selected by the '--vm' option"""
713 return vm(args, vmbuild='fastdebug') 713 return vm(args, vmbuild='fastdebug')
714 714
715 def vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, vmbuild=None): 715 def _parseVmArgs(args, vm=None, cwd=None, vmbuild=None):
716 """run the VM selected by the '--vm' option""" 716 """run the VM selected by the '--vm' option"""
717 717
718 if vm is None: 718 if vm is None:
719 vm = _get_vm() 719 vm = _get_vm()
720 720
759 if '-version' in args: 759 if '-version' in args:
760 ignoredArgs = args[args.index('-version') + 1:] 760 ignoredArgs = args[args.index('-version') + 1:]
761 if len(ignoredArgs) > 0: 761 if len(ignoredArgs) > 0:
762 mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs)) 762 mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs))
763 763
764 return mx.run(pfx + [exe, '-' + vm] + args, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout) 764 return (pfx, exe, vm, args, cwd)
765
766 def vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, vmbuild=None):
767 (pfx_, exe_, vm_, args_, cwd) = _parseVmArgs(args, vm, cwd, vmbuild)
768 return mx.run(pfx_ + [exe_, '-' + vm_] + args_, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout)
765 769
766 def _find_classes_with_annotations(p, pkgRoot, annotations, includeInnerClasses=False): 770 def _find_classes_with_annotations(p, pkgRoot, annotations, includeInnerClasses=False):
767 """ 771 """
768 Scan the sources of project 'p' for Java source files containing a line starting with 'annotation' 772 Scan the sources of project 'p' for Java source files containing a line starting with 'annotation'
769 (ignoring preceding whitespace) and return the fully qualified class name for each Java 773 (ignoring preceding whitespace) and return the fully qualified class name for each Java
1291 continue 1295 continue
1292 1296
1293 microJar = os.path.join(absoluteMicro, "target", "microbenchmarks.jar") 1297 microJar = os.path.join(absoluteMicro, "target", "microbenchmarks.jar")
1294 if not exists(microJar): 1298 if not exists(microJar):
1295 mx.logv('JMH: ignored ' + absoluteMicro + " because it doesn't contain the expected jar file ('" + microJar + "')") 1299 mx.logv('JMH: ignored ' + absoluteMicro + " because it doesn't contain the expected jar file ('" + microJar + "')")
1296 continue 1300 continue
1297 if benchmarks: 1301 if benchmarks:
1298 def _addBenchmark(x): 1302 def _addBenchmark(x):
1299 if x.startswith("Benchmark:"): 1303 if x.startswith("Benchmark:"):
1300 return 1304 return
1301 match = False 1305 match = False
1304 1308
1305 if match: 1309 if match:
1306 numBench[0] += 1 1310 numBench[0] += 1
1307 matchedSuites.add(micros) 1311 matchedSuites.add(micros)
1308 1312
1309 1313 mx.run_java(['-jar', microJar, "-l"], cwd = jmhPath, out = _addBenchmark, addDefaultArgs = False)
1310 mx.run_java(['-jar', microJar, "-l"], cwd = jmhPath, out = _addBenchmark)
1311 else: 1314 else:
1312 matchedSuites.add(micros) 1315 matchedSuites.add(micros)
1313 1316
1314 mx.logv("matchedSuites: " + str(matchedSuites)) 1317 mx.logv("matchedSuites: " + str(matchedSuites))
1315 plural = 's' if not benchmarks or numBench[0] > 1 else '' 1318 plural = 's' if not benchmarks or numBench[0] > 1 else ''
1320 if benchmarks: 1323 if benchmarks:
1321 regex.append(r".*(" + "|".join(benchmarks) + ").*") 1324 regex.append(r".*(" + "|".join(benchmarks) + ").*")
1322 1325
1323 for suite in matchedSuites: 1326 for suite in matchedSuites:
1324 absoluteMicro = os.path.join(jmhPath, suite) 1327 absoluteMicro = os.path.join(jmhPath, suite)
1325 vm(['-jar', os.path.join(absoluteMicro, "target", "microbenchmarks.jar"), 1328 (pfx, exe, vm, forkedVmArgs, _) = _parseVmArgs(vmArgs)
1329 if pfx:
1330 mx.warn("JMH ignores prefix: \"" + pfx + "\"")
1331 mx.run_java(
1332 ['-jar', os.path.join(absoluteMicro, "target", "microbenchmarks.jar"),
1326 "-f", "1", 1333 "-f", "1",
1327 "-i", "10", "-wi", "10", 1334 "-i", "10", "-wi", "10",
1328 "--jvmArgs", " ".join(["-" + _get_vm()] + vmArgs)] + regex, 1335 "--jvm", exe,
1329 vm = 'original', 1336 "--jvmArgs", " ".join(["-" + vm] + forkedVmArgs)] + regex,
1337 addDefaultArgs = False,
1330 cwd = jmhPath) 1338 cwd = jmhPath)
1331 1339
1332 1340
1333 def specjvm2008(args): 1341 def specjvm2008(args):
1334 """run one or more SPECjvm2008 benchmarks""" 1342 """run one or more SPECjvm2008 benchmarks"""