diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2024-11-16 15:24:34 +0100 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2024-12-19 09:25:20 -0800 |
| commit | 193715b920750a6bab41b691cb7de25bf39dce53 (patch) | |
| tree | a05b94286b53dbdd44435d44aed45693afb52c44 | |
| parent | bcb605201aba66343a9ff16d716454295a7a41c0 (diff) | |
| download | meson-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.py | 13 |
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) |
