def register_graalvm_vms(): default_host_vm_name = mx_sdk_vm_impl.graalvm_dist_name().lower().replace('_', '-') host_vm_names = ([default_host_vm_name.replace('-java8', '')] if '-java8' in default_host_vm_name else []) + [default_host_vm_name] for host_vm_name in host_vm_names: for config_name, java_args, launcher_args, priority in mx_sdk_vm.get_graalvm_hostvm_configs(): mx_benchmark.java_vm_registry.add_vm(GraalVm(host_vm_name, config_name, java_args, launcher_args), _suite, priority) if mx_sdk_vm_impl.has_component('svm'): _native_image_vm_registry.add_vm(NativeImageBuildVm(host_vm_name, 'default', [], []), _suite, 10) _gu_vm_registry.add_vm(GuVm(host_vm_name, 'default', [], []), _suite, 10) # We support only EE and CE configuration for native-image benchmarks for short_name, config_suffix in [('niee', 'ee'), ('ni', 'ce')]: if any(component.short_name == short_name for component in mx_sdk_vm_impl.registered_graalvm_components(stage1=False)): mx_benchmark.add_java_vm(NativeImageVM('native-image', 'default-' + config_suffix, None, None, 0, False, False, False), _suite, 10) mx_benchmark.add_java_vm(NativeImageVM('native-image', 'llvm-' + config_suffix, None, None, 0, False, False, False, True), _suite, 10) break # Add VMs for libgraal if mx_sdk_vm_impl.has_component('LibGraal'): libgraal_location = mx_sdk_vm_impl.get_native_image_locations('LibGraal', 'jvmcicompiler') if libgraal_location is not None: import mx_graal_benchmark mx_graal_benchmark.build_jvmci_vm_variants('server', 'graal-core-libgraal', ['-server', '-XX:+EnableJVMCI', '-Dgraal.CompilerConfiguration=community', '-Djvmci.Compiler=graal', '-XX:+UseJVMCINativeLibrary', '-XX:JVMCILibPath=' + dirname(libgraal_location)], mx_graal_benchmark._graal_variants, suite=_suite, priority=15, hosted=False)
def graalvm_svm(): """ Gives access to image building withing the GraalVM release. Requires dynamic import of substratevm. """ native_image_cmd = join( mx_sdk_vm_impl.graalvm_output(), 'bin', 'native-image') + ('.cmd' if mx.get_os() == 'windows' else '') svm = mx.suite('substratevm') if not exists(native_image_cmd) or not svm: mx.abort( "Image building not accessible in GraalVM {}. Build GraalVM with native-image support" .format(mx_sdk_vm_impl.graalvm_dist_name())) # useful to speed up image creation during development hosted_assertions = mx.get_env("DISABLE_SVM_IMAGE_HOSTED_ASSERTIONS", "false") != "true" @contextmanager def native_image_context(common_args=None, hosted_assertions=hosted_assertions): with svm.extensions.native_image_context( common_args, hosted_assertions, native_image_cmd=native_image_cmd) as native_image: yield native_image return native_image_context, svm.extensions
def __init__(self, **kw_args): super(GraalVmSymlinks, self).__init__( _suite, 'vm-symlinks', subDir=None, srcDirs=[], deps=['sdk:' + mx_sdk_vm_impl.graalvm_dist_name()], workingSets=None, d=_suite.dir, theLicense=None, testProject=False, **kw_args) self.links = [] sdk_suite = mx.suite('sdk') for link_name in 'latest_graalvm', 'latest_graalvm_home': self.links += [(relpath(join(sdk_suite.dir, link_name), _suite.dir), join(_suite.dir, link_name))]
def graalvm_svm(): """ Gives access to image building withing the GraalVM release. Requires dynamic import of substratevm. """ native_image_cmd = join(mx_sdk_vm_impl.graalvm_output(), 'bin', 'native-image') svm = mx.suite('substratevm') if not exists(native_image_cmd) or not svm: mx.abort( "Image building not accessible in GraalVM {}. Build GraalVM with native-image support" .format(mx_sdk_vm_impl.graalvm_dist_name())) @contextmanager def native_image_context(common_args=None, hosted_assertions=True): with svm.extensions.native_image_context( common_args, hosted_assertions, native_image_cmd=native_image_cmd) as native_image: yield native_image return native_image_context, svm.extensions