diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-01-08 12:26:07 +0100 |
|---|---|---|
| committer | Jussi Pakkanen <jussi.pakkanen@mailbox.org> | 2025-06-17 12:29:56 +0300 |
| commit | 2f47d0b4b15e27aa62f439c4b65282771149cc7c (patch) | |
| tree | d50002095ec899f5db9d037ff658e575e86c490d /mesonbuild/interpreter/interpreterobjects.py | |
| parent | f3366a7e543f69844bd3658db65c28295912db79 (diff) | |
| download | meson-2f47d0b4b15e27aa62f439c4b65282771149cc7c.tar.gz | |
interpreter: make operators per-class
Do not call update() and Enum.__hash__ a gazillion times; operators
are the same for every instance of the class. In order to access
the class for non-trivial operators, the operators are first marked
using a decorator, and then OPERATORS is built via __init_subclass__.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/interpreter/interpreterobjects.py')
| -rw-r--r-- | mesonbuild/interpreter/interpreterobjects.py | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py index aeead5013..b249d02ab 100644 --- a/mesonbuild/interpreter/interpreterobjects.py +++ b/mesonbuild/interpreter/interpreterobjects.py @@ -15,7 +15,7 @@ from .. import mlog from ..modules import ModuleReturnValue, ModuleObject, ModuleState, ExtensionModule, NewExtensionModule from ..backend.backends import TestProtocol from ..interpreterbase import ( - ContainerTypeInfo, KwargInfo, MesonOperator, + ContainerTypeInfo, KwargInfo, InterpreterObject, MesonOperator, MesonInterpreterObject, ObjectHolder, MutableInterpreterObject, FeatureNew, FeatureDeprecated, typed_pos_args, typed_kwargs, typed_operator, @@ -32,7 +32,7 @@ if T.TYPE_CHECKING: from . import kwargs from ..cmake.interpreter import CMakeInterpreter from ..envconfig import MachineInfo - from ..interpreterbase import FeatureCheckBase, InterpreterObject, SubProject, TYPE_var, TYPE_kwargs, TYPE_nvar, TYPE_nkwargs + from ..interpreterbase import FeatureCheckBase, SubProject, TYPE_var, TYPE_kwargs, TYPE_nvar, TYPE_nkwargs from .interpreter import Interpreter from typing_extensions import TypedDict @@ -1062,10 +1062,6 @@ class _CustomTargetHolder(ObjectHolder[_CT]): 'to_list': self.to_list_method, }) - self.operators.update({ - MesonOperator.INDEX: _CustomTargetHolder.op_index, - }) - def __repr__(self) -> str: r = '<{} {}: {}>' h = self.held_object @@ -1087,6 +1083,7 @@ class _CustomTargetHolder(ObjectHolder[_CT]): @noKwargs @typed_operator(MesonOperator.INDEX, int) + @InterpreterObject.operator(MesonOperator.INDEX) def op_index(self, other: int) -> build.CustomTargetIndex: try: return self.held_object[other] |
