# HG changeset patch # User Josef Eisl # Date 1444396094 -7200 # Node ID 087d6b3e4c9b19628964b9e1a951df3e768aeb10 # Parent c356d2e4659dfa49914dfe5d79f87e988e68f3d7 mx gate: add support for --extra-vm-argument. diff -r c356d2e4659d -r 087d6b3e4c9b mx.graal/mx_graal.py --- a/mx.graal/mx_graal.py Fri Oct 09 15:01:49 2015 +0200 +++ b/mx.graal/mx_graal.py Fri Oct 09 15:08:14 2015 +0200 @@ -36,6 +36,7 @@ from mx_jvmci import JvmciJDKDeployedDist, add_bootclasspath_prepend, buildvms from mx_jvmci import jdkDeployedDists #pylint: disable=unused-import from mx_gate import Task +from sanitycheck import _noneAsEmptyList try: from mx_jvmci import run_vm, VM, get_vm, isJVMCIEnabled, relativeVmLibDirInJdk, get_jvmci_jdk, get_jvmci_jdk_dir #pylint: disable=no-name-in-module @@ -196,7 +197,7 @@ args += ['--jvmArgsPrepend', ' '.join(['-' + jvm] + forkedVmArgs)] run_vm(args + jmhArgs) -def ctw(args): +def ctw(args, extraVMarguments=None): """run CompileTheWorld""" defaultCtwopts = '-Inline' @@ -229,17 +230,17 @@ else: vmargs += ['-XX:+CompileTheWorld', '-Xbootclasspath/p:' + jar] - run_vm(vmargs) + run_vm(vmargs + _noneAsEmptyList(extraVMarguments)) class UnitTestRun: def __init__(self, name, args): self.name = name self.args = args - def run(self, suites, tasks): + def run(self, suites, tasks, extraVMarguments=None): for suite in suites: with Task(self.name + ': hosted-product ' + suite, tasks) as t: - if t: unittest(['--suite', suite, '--enable-timing', '--verbose', '--fail-fast'] + self.args) + if t: unittest(['--suite', suite, '--enable-timing', '--verbose', '--fail-fast'] + self.args + _noneAsEmptyList(extraVMarguments)) class BootstrapTest: def __init__(self, name, vmbuild, args, suppress=None): @@ -248,7 +249,7 @@ self.args = args self.suppress = suppress - def run(self, tasks): + def run(self, tasks, extraVMarguments=None): with VM('jvmci', self.vmbuild): with Task(self.name + ':' + self.vmbuild, tasks) as t: if t: @@ -256,9 +257,9 @@ out = mx.DuplicateSuppressingStream(self.suppress).write else: out = None - run_vm(self.args + ['-XX:-TieredCompilation', '-XX:+BootstrapJVMCI', '-version'], out=out) + run_vm(self.args + ['-XX:-TieredCompilation', '-XX:+BootstrapJVMCI', '-version'] + _noneAsEmptyList(extraVMarguments), out=out) -def compiler_gate_runner(suites, unit_test_runs, bootstrap_tests, tasks): +def compiler_gate_runner(suites, unit_test_runs, bootstrap_tests, tasks, extraVMarguments=None): # Build server-hosted-jvmci now so we can run the unit tests with Task('BuildHotSpotGraalHosted: product', tasks) as t: @@ -267,12 +268,12 @@ # Run unit tests on server-hosted-jvmci with VM('server', 'product'): for r in unit_test_runs: - r.run(suites, tasks) + r.run(suites, tasks, extraVMarguments) # Run ctw against rt.jar on server-hosted-jvmci with VM('server', 'product'): with Task('CTW:hosted-product', tasks) as t: - if t: ctw(['--ctwopts', '-Inline +ExitVMOnException', '-esa', '-G:+CompileTheWorldMultiThreaded', '-G:-InlineDuringParsing', '-G:-CompileTheWorldVerbose', '-XX:ReservedCodeCacheSize=300m']) + if t: ctw(['--ctwopts', '-Inline +ExitVMOnException', '-esa', '-G:+CompileTheWorldMultiThreaded', '-G:-InlineDuringParsing', '-G:-CompileTheWorldVerbose', '-XX:ReservedCodeCacheSize=300m'], _noneAsEmptyList(extraVMarguments)) # Build the jvmci VMs so we can run the other tests with Task('BuildHotSpotGraalOthers: fastdebug,product', tasks) as t: @@ -280,11 +281,12 @@ # bootstrap tests for b in bootstrap_tests: - b.run(tasks) + b.run(tasks, extraVMarguments) # run dacapo sanitychecks for vmbuild in ['fastdebug', 'product']: - for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild) + sanitycheck.getScalaDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild): + for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild, extraVmArguments=extraVMarguments) \ + + sanitycheck.getScalaDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild, extraVmArguments=extraVMarguments): with Task(str(test) + ':' + vmbuild, tasks) as t: if t and not test.test('jvmci'): t.abort(test.name + ' Failed') @@ -292,12 +294,12 @@ # ensure -Xbatch still works with VM('jvmci', 'product'): with Task('DaCapo_pmd:BatchMode:product', tasks) as t: - if t: dacapo(['-Xbatch', 'pmd']) + if t: dacapo(_noneAsEmptyList(extraVMarguments) + ['-Xbatch', 'pmd']) # ensure -Xcomp still works with VM('jvmci', 'product'): with Task('XCompMode:product', tasks) as t: - if t: run_vm(['-Xcomp', '-version']) + if t: run_vm(_noneAsEmptyList(extraVMarguments) + ['-Xcomp', '-version']) graal_unit_test_runs = [ @@ -322,9 +324,10 @@ ] def _graal_gate_runner(args, tasks): - compiler_gate_runner(['graal'], graal_unit_test_runs, graal_bootstrap_tests, tasks) + compiler_gate_runner(['graal'], graal_unit_test_runs, graal_bootstrap_tests, tasks, args.extra_vm_argument) mx_gate.add_gate_runner(_suite, _graal_gate_runner) +mx_gate.add_gate_argument('--extra-vm-argument', action='append', help='add extra vm argument to gate tasks if applicable (multiple occurrences allowed)') def deoptalot(args): """bootstrap a VM with DeoptimizeALot and VerifyOops on diff -r c356d2e4659d -r 087d6b3e4c9b mx.graal/sanitycheck.py --- a/mx.graal/sanitycheck.py Fri Oct 09 15:01:49 2015 +0200 +++ b/mx.graal/sanitycheck.py Fri Oct 09 15:08:14 2015 +0200 @@ -190,17 +190,17 @@ return Test("SPECjvm2008", ['-jar', 'SPECjvm2008.jar'] + _noneAsEmptyList(benchArgs), [success], [error], [matcher], vmOpts=['-Xms3g', '-XX:+' + gc, '-XX:-UseCompressedOops'], defaultCwd=specjvm2008) -def getDacapos(level=SanityCheckLevel.Normal, gateBuildLevel=None, dacapoArgs=None): +def getDacapos(level=SanityCheckLevel.Normal, gateBuildLevel=None, dacapoArgs=None, extraVmArguments=None): checks = [] for (bench, ns) in dacapoSanityWarmup.items(): if ns[level] > 0: if gateBuildLevel is None or gateBuildLevel in dacapoGateBuildLevels[bench]: - checks.append(getDacapo(bench, ['-n', str(ns[level])] + _noneAsEmptyList(dacapoArgs))) + checks.append(getDacapo(bench, ['-n', str(ns[level])] + _noneAsEmptyList(dacapoArgs), extraVmArguments=extraVmArguments)) return checks -def getDacapo(name, dacapoArgs=None): +def getDacapo(name, dacapoArgs=None, extraVmArguments=None): dacapo = mx.get_env('DACAPO_CP') if dacapo is None: l = mx.library('DACAPO', False) @@ -221,19 +221,19 @@ dacapoMatcher1 = ValuesMatcher(dacapoTime1, {'group' : 'DaCapo-1stRun', 'name' : '', 'score' : '