summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/data_smart.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2023-01-21 12:24:49 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-01-24 21:59:44 +0000
commitea12b673cfe5253c2c3baf3325718156b82cad1b (patch)
tree41a8561e62f07f3588c6dc4724fc3ed979bd2146 /bitbake/lib/bb/data_smart.py
parent663c259ffa3b013cb7cc3f4e1dc69aca917706b2 (diff)
downloadpoky-ea12b673cfe5253c2c3baf3325718156b82cad1b.tar.gz
bitbake: data_smart: Small optimisation to _findVar()
Some users of _findVar don't need the override data and even getVarFlag doesn't need it in some common cases (parsing=True). Rearrange the code as the current overridedata approach doesn't need to be in the _findVar code anyway. This removes some search overhead from a critical path. (Bitbake rev: fcb64e1138a20eb19560af3fc5d1fa748cc9cf34) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r--bitbake/lib/bb/data_smart.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index e2c93597e5..c597dbade8 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -515,18 +515,18 @@ class DataSmart(MutableMapping):
515 dest = self.dict 515 dest = self.dict
516 while dest: 516 while dest:
517 if var in dest: 517 if var in dest:
518 return dest[var], self.overridedata.get(var, None) 518 return dest[var]
519 519
520 if "_data" not in dest: 520 if "_data" not in dest:
521 break 521 break
522 dest = dest["_data"] 522 dest = dest["_data"]
523 return None, self.overridedata.get(var, None) 523 return None
524 524
525 def _makeShadowCopy(self, var): 525 def _makeShadowCopy(self, var):
526 if var in self.dict: 526 if var in self.dict:
527 return 527 return
528 528
529 local_var, _ = self._findVar(var) 529 local_var = self._findVar(var)
530 530
531 if local_var: 531 if local_var:
532 self.dict[var] = copy.copy(local_var) 532 self.dict[var] = copy.copy(local_var)
@@ -782,10 +782,12 @@ class DataSmart(MutableMapping):
782 if expand and cachename in self.expand_cache: 782 if expand and cachename in self.expand_cache:
783 return self.expand_cache[cachename].value 783 return self.expand_cache[cachename].value
784 784
785 local_var, overridedata = self._findVar(var) 785 local_var = self._findVar(var)
786 value = None 786 value = None
787 removes = set() 787 removes = set()
788 if flag == "_content" and overridedata is not None and not parsing: 788 if flag == "_content" and not parsing:
789 overridedata = self.overridedata.get(var, None)
790 if flag == "_content" and not parsing and overridedata is not None:
789 match = False 791 match = False
790 active = {} 792 active = {}
791 self.need_overrides() 793 self.need_overrides()
@@ -900,7 +902,7 @@ class DataSmart(MutableMapping):
900 def delVarFlag(self, var, flag, **loginfo): 902 def delVarFlag(self, var, flag, **loginfo):
901 self.expand_cache = {} 903 self.expand_cache = {}
902 904
903 local_var, _ = self._findVar(var) 905 local_var = self._findVar(var)
904 if not local_var: 906 if not local_var:
905 return 907 return
906 if not var in self.dict: 908 if not var in self.dict:
@@ -943,7 +945,7 @@ class DataSmart(MutableMapping):
943 self.dict[var][i] = flags[i] 945 self.dict[var][i] = flags[i]
944 946
945 def getVarFlags(self, var, expand = False, internalflags=False): 947 def getVarFlags(self, var, expand = False, internalflags=False):
946 local_var, _ = self._findVar(var) 948 local_var = self._findVar(var)
947 flags = {} 949 flags = {}
948 950
949 if local_var: 951 if local_var: