summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2024-11-16 15:24:34 +0100
committerDylan Baker <dylan@pnwbakers.com>2024-12-19 09:25:20 -0800
commit193715b920750a6bab41b691cb7de25bf39dce53 (patch)
treea05b94286b53dbdd44435d44aed45693afb52c44
parentbcb605201aba66343a9ff16d716454295a7a41c0 (diff)
downloadmeson-193715b920750a6bab41b691cb7de25bf39dce53.tar.gz
utils: optimize PerMachine
There is no need to create and look up a dictionary when MachineChoice is an enum, and there is no need to create a PerMachine object on every __setitem__ of another PerMachine object. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--mesonbuild/utils/universal.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/mesonbuild/utils/universal.py b/mesonbuild/utils/universal.py
index 76a6df8da..8012dcee3 100644
--- a/mesonbuild/utils/universal.py
+++ b/mesonbuild/utils/universal.py
@@ -473,6 +473,10 @@ def classify_unity_sources(compilers: T.Iterable['Compiler'], sources: T.Sequenc
return compsrclist
+MACHINE_NAMES = ['build', 'host']
+MACHINE_PREFIXES = ['build.', '']
+
+
class MachineChoice(enum.IntEnum):
"""Enum class representing one of the two abstract machine names used in
@@ -486,10 +490,10 @@ class MachineChoice(enum.IntEnum):
return f'{self.get_lower_case_name()} machine'
def get_lower_case_name(self) -> str:
- return PerMachine('build', 'host')[self]
+ return MACHINE_NAMES[self.value]
def get_prefix(self) -> str:
- return PerMachine('build.', '')[self]
+ return MACHINE_PREFIXES[self.value]
class PerMachine(T.Generic[_T]):
@@ -498,10 +502,7 @@ class PerMachine(T.Generic[_T]):
self.host = host
def __getitem__(self, machine: MachineChoice) -> _T:
- return {
- MachineChoice.BUILD: self.build,
- MachineChoice.HOST: self.host,
- }[machine]
+ return [self.build, self.host][machine.value]
def __setitem__(self, machine: MachineChoice, val: _T) -> None:
setattr(self, machine.get_lower_case_name(), val)