summaryrefslogtreecommitdiffstats
path: root/BaseTools
diff options
context:
space:
mode:
authorYonghong Zhu <yonghong.zhu@intel.com>2016-03-29 12:59:43 +0800
committerYonghong Zhu <yonghong.zhu@intel.com>2016-04-06 13:40:14 +0800
commit213ae07750fc7532e8ba62a234e958388d1f0359 (patch)
tree9709b843f922df4e401d604289c3bcd8bb09cfb0 /BaseTools
parent024bdafc6800ee1e219df16bc11ca7a4c007a81d (diff)
downloadedk2-213ae07750fc7532e8ba62a234e958388d1f0359.tar.gz
edk2-213ae07750fc7532e8ba62a234e958388d1f0359.tar.bz2
edk2-213ae07750fc7532e8ba62a234e958388d1f0359.zip
BaseTools: cache the defined Guid tool to improve the performance
Current GenFds Tool class GuidSection() is parsing the tools_def.txt for every GUID'ed section that has a GUID defined tool, it cause a bad performance. so this patch cache the defined Guid tool to improve the performance. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'BaseTools')
-rw-r--r--BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py3
-rw-r--r--BaseTools/Source/Python/GenFds/GuidSection.py8
2 files changed, 8 insertions, 3 deletions
diff --git a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py b/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
index 8a974236f2..d1c9aff8d0 100644
--- a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
+++ b/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
@@ -1,7 +1,7 @@
## @file
# Global variables for GenFds
#
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
@@ -68,6 +68,7 @@ class GenFdsGlobalVariable:
BuildRuleFamily = "MSFT"
ToolChainFamily = "MSFT"
__BuildRuleDatabase = None
+ GuidToolDefinition = {}
#
# The list whose element are flags to indicate if large FFS or SECTION files exist in FV.
diff --git a/BaseTools/Source/Python/GenFds/GuidSection.py b/BaseTools/Source/Python/GenFds/GuidSection.py
index cc0c05a28c..ac5ae585f9 100644
--- a/BaseTools/Source/Python/GenFds/GuidSection.py
+++ b/BaseTools/Source/Python/GenFds/GuidSection.py
@@ -1,7 +1,7 @@
## @file
# process GUIDed section generation
#
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
@@ -268,6 +268,10 @@ class GuidSection(GuidSectionClassObject) :
if Target + '_' + ToolChain + '_' + Arch not in self.KeyStringList:
self.KeyStringList.append(Target + '_' + ToolChain + '_' + Arch)
+ if GenFdsGlobalVariable.GuidToolDefinition:
+ if self.NameGuid in GenFdsGlobalVariable.GuidToolDefinition.keys():
+ return GenFdsGlobalVariable.GuidToolDefinition[self.NameGuid]
+
ToolDefinition = ToolDefClassObject.ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDictionary
ToolPathTmp = None
ToolOption = None
@@ -298,7 +302,7 @@ class GuidSection(GuidSectionClassObject) :
if ToolPathTmp != ToolPath:
EdkLogger.error("GenFds", GENFDS_ERROR, "Don't know which tool to use, %s or %s ?" % (ToolPathTmp, ToolPath))
-
+ GenFdsGlobalVariable.GuidToolDefinition[self.NameGuid] = (ToolPathTmp, ToolOption)
return ToolPathTmp, ToolOption