[poky] [PATCH 2/2] bitbake: Change the way to implement ??= operator

Dongxiao Xu dongxiao.xu at intel.com
Mon Dec 13 06:51:16 PST 2010


Previously we implement ??= operator while doing finalize(), which hurts
performance due to the large index of keys. This new method will return
getVarFlag("defaultval") if getVar returns None. This patch brings about
15% performance gain when parsing bb files.

Signed-off-by: Dongxiao Xu <dongxiao.xu at intel.com>
---
 bitbake/lib/bb/data_smart.py |    3 +++
 bitbake/lib/bb/parse/ast.py  |    7 -------
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index a8b179f..708f686 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -210,6 +210,9 @@ class DataSmart:
     def getVar(self, var, exp):
         value = self.getVarFlag(var, "content")
 
+        if value is None:
+            value = self.getVarFlag(var, "defaultval")
+
         if exp and value:
             return self.expand(value, var)
         return value
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index 870ae65..cace9ab 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -109,9 +109,6 @@ class DataNode(AstNode):
         if 'flag' in groupd and groupd['flag'] != None:
             bb.data.setVarFlag(key, groupd['flag'], val, data)
         elif groupd["lazyques"]:
-            assigned = bb.data.getVar("__lazy_assigned", data) or []
-            assigned.append(key)
-            bb.data.setVar("__lazy_assigned", assigned, data)
             bb.data.setVarFlag(key, "defaultval", val, data)
         else:
             bb.data.setVar(key, val, data)
@@ -301,10 +298,6 @@ def handleInherit(statements, m):
     statements.append(InheritNode(m.group(1)))
 
 def finalize(fn, d, variant = None):
-    for lazykey in bb.data.getVar("__lazy_assigned", d) or ():
-        if bb.data.getVar(lazykey, d) is None:
-            val = bb.data.getVarFlag(lazykey, "defaultval", d)
-            bb.data.setVar(lazykey, val, d)
 
     bb.data.expandKeys(d)
     bb.data.update_data(d)
-- 
1.6.3.3




More information about the poky mailing list