Skip to content

Commit 5e1897e

Browse files
committed
[GR-69926] Add support for --prebuilt-vm in mx benchmark VM args.
PullRequest: mx/1969
2 parents cc8ddbd + 73a140f commit 5e1897e

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/mx/_impl/mx_benchmark.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1750,6 +1750,18 @@ def warning_only(self):
17501750
return True
17511751

17521752

1753+
def _prebuilt_vm_arg_parser():
1754+
parser = ArgumentParser(add_help=False, usage=_mx_benchmark_usage_example + " -- <options> -- ...")
1755+
group = parser.add_mutually_exclusive_group()
1756+
group.add_argument("--prebuilt-vm", action="store_true", help="Uses the VM pointed to by JAVA_HOME to run benchmarks.")
1757+
return parser
1758+
1759+
_prebuilt_vm_parser_name = "prebuilt_vm_parser"
1760+
parsers[_prebuilt_vm_parser_name] = ParserEntry(
1761+
_prebuilt_vm_arg_parser(),
1762+
"Alternative VM selection:"
1763+
)
1764+
17531765
class VmBenchmarkSuite(StdOutBenchmarkSuite):
17541766
def vmArgs(self, bmSuiteArgs):
17551767
args = self.vmAndRunArgs(bmSuiteArgs)[0]
@@ -1776,7 +1788,7 @@ def func(cmd, bmSuite, prefix_command=prefix_command):
17761788
return args
17771789

17781790
def parserNames(self):
1779-
names = []
1791+
names = [_prebuilt_vm_parser_name]
17801792

17811793
def _acc(reg):
17821794
names.append(reg.get_parser_name())
@@ -1837,7 +1849,11 @@ def runAndReturnStdOut(self, benchmarks, bmSuiteArgs):
18371849
if command is None:
18381850
return 0, "", {}
18391851
vm = self.get_vm_registry().get_vm_from_suite_args(bmSuiteArgs)
1840-
vm.extract_vm_info(self.vmArgs(bmSuiteArgs))
1852+
prebuilt_args, _ = get_parser(_prebuilt_vm_parser_name).parse_known_args(bmSuiteArgs)
1853+
if hasattr(vm, 'set_run_on_java_home'):
1854+
vm.set_run_on_java_home(prebuilt_args.prebuilt_vm)
1855+
vmArgs = self.vmArgs(bmSuiteArgs)
1856+
vm.extract_vm_info(vmArgs)
18411857
vm.command_mapper_hooks = [(name, func, self) for name, func in self._command_mapper_hooks.items()]
18421858
with self.new_execution_context(vm, benchmarks, bmSuiteArgs):
18431859
t = self._vmRun(vm, cwd, command, benchmarks, bmSuiteArgs)
@@ -2188,6 +2204,7 @@ class OutputCapturingJavaVm(OutputCapturingVm): #pylint: disable=R0921
21882204
def __init__(self):
21892205
super(OutputCapturingJavaVm, self).__init__()
21902206
self._vm_info = {}
2207+
self._run_on_java_home = None
21912208
# prevents an infinite loop when the host-vm is a GraalVm since its `run_java()` function calls `extract_vm_info()`, which calls `run_java()`
21922209
self.currently_extracting_vm_info = False
21932210

@@ -2266,6 +2283,8 @@ def extract_vm_info(self, args=None):
22662283
self.currently_extracting_vm_info = False
22672284
self.command_mapper_hooks = hooks
22682285

2286+
vm_info["platform.prebuilt-vm"] = self.run_on_java_home() is True
2287+
22692288
self._vm_info[args_str] = vm_info
22702289

22712290
def dimensions(self, cwd, args, code, out):
@@ -2288,6 +2307,14 @@ def run_java(self, args, out=None, err=None, cwd=None, nonZeroIsFatal=False):
22882307
"""Runs JVM with the specified arguments stdout and stderr, and working dir."""
22892308
raise NotImplementedError()
22902309

2310+
def run_on_java_home(self):
2311+
"""Describes if we should run on the given VM or on a one derived from it as some subclasses would do by default"""
2312+
return self._run_on_java_home
2313+
2314+
def set_run_on_java_home(self, value):
2315+
"""When setting to True, it would force the use of the VM pointed by JAVA_HOME to be used as runtime"""
2316+
self._run_on_java_home = value
2317+
22912318
def home(self):
22922319
"""Returns the JAVA_HOME location of that vm"""
22932320
return mx.get_jdk().home

src/mx/mx_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# The version must be updated for every PR (checked in CI) and the comment should reflect the PR's issue
2-
version = "7.61.0" # GR-69773 jdkDependent distributions
2+
version = "7.62.0" # GR-69926 Add --prebuilt-vm support to mx benchmark

0 commit comments

Comments
 (0)