BootstrapTest('BootstrapWithSystemAssertionsNoCoop', 'fastdebug', ['-esa', '-XX:-UseCompressedOops', '-G:+ExitVMOnException'], tags=[GraalTags.fulltest]), BootstrapTest('BootstrapWithGCVerification', 'product', ['-XX:+UnlockDiagnosticVMOptions', '-XX:+VerifyBeforeGC', '-XX:+VerifyAfterGC', '-G:+ExitVMOnException'], tags=[GraalTags.fulltest], suppress=['VerifyAfterGC:', 'VerifyBeforeGC:']), BootstrapTest('BootstrapWithG1GCVerification', 'product', ['-XX:+UnlockDiagnosticVMOptions', '-XX:-UseSerialGC', '-XX:+UseG1GC', '-XX:+VerifyBeforeGC', '-XX:+VerifyAfterGC', '-G:+ExitVMOnException'], tags=[GraalTags.fulltest], suppress=['VerifyAfterGC:', 'VerifyBeforeGC:']), BootstrapTest('BootstrapEconomyWithSystemAssertions', 'fastdebug', ['-esa', '-Djvmci.Compiler=graal-economy', '-G:+ExitVMOnException'], tags=[GraalTags.fulltest]), BootstrapTest('BootstrapWithExceptionEdges', 'fastdebug', ['-esa', '-G:+StressInvokeWithExceptionNode', '-G:+ExitVMOnException'], tags=[GraalTags.fulltest]), BootstrapTest('BootstrapWithRegisterPressure', 'product', ['-esa', '-G:RegisterPressure=' + _registers, '-G:+ExitVMOnException', '-G:+LIRUnlockBackendRestart'], tags=[GraalTags.fulltest]), BootstrapTest('BootstrapTraceRAWithRegisterPressure', 'product', ['-esa', '-G:+TraceRA', '-G:RegisterPressure=' + _registers, '-G:+ExitVMOnException', '-G:+LIRUnlockBackendRestart'], tags=[GraalTags.fulltest]), BootstrapTest('BootstrapWithImmutableCode', 'product', ['-esa', '-G:+ImmutableCode', '-G:+VerifyPhases', '-G:+ExitVMOnException'], tags=[GraalTags.fulltest]), ] def _graal_gate_runner(args, tasks): compiler_gate_runner(['graal-core', 'truffle'], 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 _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs): run_vm(vmArgs + [mainClass] + mainClassArgs) mx_unittest.set_vm_launcher('JDK9 VM launcher', _unittest_vm_launcher) def _parseVmArgs(jdk, args, addDefaultArgs=True): args = mx.expand_project_in_args(args, insitu=False) jacocoArgs = mx_gate.get_jacoco_agent_args() if jacocoArgs: args = jacocoArgs + args # Support for -G: options def translateGOption(arg): if arg.startswith('-G:+'):
with Task('TestToolchain', tasks, tags=['toolchain', 'sulongMisc', 'sulongCoverage']) as t: if t: mx.command_function( 'clean')(['--project', 'toolchain-launchers-tests'] + args.extra_build_args) mx.command_function( 'build')(['--project', 'toolchain-launchers-tests'] + args.extra_build_args) add_gate_runner(_suite, _sulong_gate_runner) add_gate_argument('--extra-llvm-argument', dest='extra_llvm_arguments', action='append', help='add extra llvm arguments to gate tasks', default=[]) def testLLVMImage(image, imageArgs=None, testFilter=None, libPath=True, test=None, unittestArgs=None): """runs the SulongSuite tests on an AOT compiled lli image""" args = ['-Dsulongtest.testAOTImage=' + image] aotArgs = [] if libPath: aotArgs += [mx_subst.path_substitutions.substitute('<sulong_home>')]
class ShellEscapedStringAction(argparse.Action): """Turns a shell-escaped string into a list of arguments. Note that it appends the result to the destination. """ def __init__(self, option_strings, nargs=None, **kwargs): if nargs is not None: raise ValueError("nargs not allowed") super(ShellEscapedStringAction, self).__init__(option_strings, **kwargs) def __call__(self, parser, namespace, values, option_string=None): # do not override existing values old_values = getattr(namespace, self.dest) setattr(namespace, self.dest, (old_values if old_values else []) + shlex.split(values)) mx_gate.add_gate_runner(_suite, _graal_gate_runner) mx_gate.add_gate_argument('--extra-vm-argument', action=ShellEscapedStringAction, help='add extra vm arguments to gate tasks if applicable') def _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs): run_vm(vmArgs + [mainClass] + mainClassArgs) def _unittest_config_participant(config): vmArgs, mainClass, mainClassArgs = config cpIndex, cp = mx.find_classpath_arg(vmArgs) if cp: cp = _uniqify(cp.split(os.pathsep)) if isJDK8: # Remove entries from class path that are in Graal or on the boot class path redundantClasspathEntries = set() for dist in [entry.dist() for entry in _jvmci_classpath]: redundantClasspathEntries.update((d.output_dir() for d in dist.archived_deps() if d.isJavaProject())) redundantClasspathEntries.add(dist.path)
]) with Task('CleanAndBuildIdealGraphVisualizer', tasks, disableJacoco=True) as t: if t and platform.processor() != 'sparc': buildxml = mx._cygpathU2W( join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml')) mx.run(['ant', '-f', buildxml, '-q', 'clean', 'build'], env=_igvBuildEnv()) mx_gate.add_gate_runner(_suite, _jvmci_gate_runner) mx_gate.add_gate_argument('-g', '--only-build-jvmci', action='store_false', dest='buildNonJVMCI', help='only build the JVMCI VM') def _igvJdk(): v8u20 = mx.VersionSpec("1.8.0_20") v8u40 = mx.VersionSpec("1.8.0_40") v8 = mx.VersionSpec("1.8") def _igvJdkVersionCheck(version): return version >= v8 and (version < v8u20 or version >= v8u40) return mx.get_jdk( _igvJdkVersionCheck, versionDescription='>= 1.8 and < 1.8.0u20 or >= 1.8.0u40',
def _graal_gate_runner(args, tasks): if args.simple: compiler_simple_gate_runner(['graal-core', 'truffle'], graal_unit_test_runs, graal_simple_bootstrap_tests, tasks, args.extra_vm_argument) else: compiler_gate_runner(['graal-core', 'truffle'], 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)' ) mx_gate.add_gate_argument('--simple', action='store_true', help='only run simple task set') def _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs): run_vm(vmArgs + [mainClass] + mainClassArgs) mx_unittest.set_vm_launcher('JDK9 VM launcher', _unittest_vm_launcher) def _parseVmArgs(jdk, args, addDefaultArgs=True):
def __init__(self, option_strings, nargs=None, **kwargs): if nargs is not None: raise ValueError("nargs not allowed") super(ShellEscapedStringAction, self).__init__(option_strings, **kwargs) def __call__(self, parser, namespace, values, option_string=None): # do not override existing values old_values = getattr(namespace, self.dest) setattr(namespace, self.dest, (old_values if old_values else []) + shlex.split(values)) mx_gate.add_gate_runner(_suite, _graal_gate_runner) mx_gate.add_gate_argument( '--extra-vm-argument', action=ShellEscapedStringAction, help='add extra vm arguments to gate tasks if applicable') def _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs): run_vm(vmArgs + [mainClass] + mainClassArgs) def _unittest_config_participant(config): vmArgs, mainClass, mainClassArgs = config cpIndex, cp = mx.find_classpath_arg(vmArgs) if cp: cp = _uniqify(cp.split(os.pathsep)) if isJDK8: # Remove entries from class path that are in Graal or on the boot class path redundantClasspathEntries = set()
["-esa", "-G:+ImmutableCode", "-G:+VerifyPhases", "-G:+ExitVMOnException"], tags=[GraalTags.fulltest], ), ] def _graal_gate_runner(args, tasks): compiler_gate_runner( ["graal-core", "truffle"], 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 _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs): run_vm(vmArgs + [mainClass] + mainClassArgs) mx_unittest.set_vm_launcher("JDK9 VM launcher", _unittest_vm_launcher) def _parseVmArgs(jdk, args, addDefaultArgs=True): args = mx.expand_project_in_args(args, insitu=False) jacocoArgs = mx_gate.get_jacoco_agent_args() if jacocoArgs:
# Run unit tests in hosted mode with VM(jvmVariant='server', debugLevel='release', jvmciMode='hosted'): with Task('JVMCI UnitTests: hosted-release', tasks) as t: if t: unittest(['--suite', 'jvmci', '--enable-timing', '--verbose', '--fail-fast']) # Build the other VM flavors with Task('BuildHotSpotJVMCIOthers: fastdebug', tasks) as t: if t: _runmultimake(['--jdk-jvm-variants', 'server', '--jdk-debug-levels', 'fastdebug']) with Task('CleanAndBuildIdealGraphVisualizer', tasks, disableJacoco=True) as t: if t and platform.processor() != 'sparc': buildxml = mx._cygpathU2W(join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml')) mx.run(['ant', '-f', buildxml, '-q', 'clean', 'build'], env=_igvBuildEnv()) mx_gate.add_gate_runner(_suite, _jvmci_gate_runner) mx_gate.add_gate_argument('-g', '--only-build-jvmci', action='store_false', dest='buildNonJVMCI', help='only build the JVMCI VM') def _igvJdk(): v8u20 = mx.VersionSpec("1.8.0_20") v8u40 = mx.VersionSpec("1.8.0_40") v8 = mx.VersionSpec("1.8") def _igvJdkVersionCheck(version): return version >= v8 and (version < v8u20 or version >= v8u40) return mx.get_jdk(_igvJdkVersionCheck, versionDescription='>= 1.8 and < 1.8.0u20 or >= 1.8.0u40', purpose="building & running IGV").home def _igvBuildEnv(): # When the http_proxy environment variable is set, convert it to the proxy settings that ant needs env = dict(os.environ) proxy = os.environ.get('http_proxy') if not (proxy is None) and len(proxy) > 0: if '://' in proxy:
b.run(tasks, extraVMarguments) graal_simple_bootstrap_tests = [ BootstrapTest('BootstrapWithSystemAssertions', 'fastdebug', []), ] def _graal_gate_runner(args, tasks): if args.simple: compiler_simple_gate_runner(['graal-core', 'truffle'], graal_unit_test_runs, graal_simple_bootstrap_tests, tasks, args.extra_vm_argument) else: compiler_gate_runner(['graal-core', 'truffle'], 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)') mx_gate.add_gate_argument('--simple', action='store_true', help='only run simple task set') def jdkartifactstats(args): """show stats about JDK deployed Graal artifacts""" artifacts = {} jdkDir = get_jvmci_jdk().home def _getDeployedJars(): if JVMCI_VERSION < 9: for root, _, filenames in os.walk(join(jdkDir, 'jre', 'lib')): for f in filenames: if f.endswith('.jar') and not f.endswith('.stripped.jar'): yield join(root, f) else: for jdkDist in jdkDeployedDists: dist = jdkDist.dist()