map->unordered_map in lcl_fillNativeSymbols
no need to use an ordered map here, and an unordered map is much faster. Also avoid repeatedly indexing into the map. Change-Id: Ia6b39800a9890ab0df3e8e73282d504e91e679ec Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9633 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins CPCI <releng@collaboraoffice.com> (cherry picked from commit 1e786f1a4b588ce289b90979231b3c5e55cab27d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210492 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
committed by
Xisco Fauli
parent
75589a573e
commit
01df8b6ff0
@@ -1039,7 +1039,7 @@ FormulaCompiler::OpCodeMapPtr FormulaCompiler::CreateOpCodeMap(
|
||||
static bool lcl_fillNativeSymbols( FormulaCompiler::NonConstOpCodeMapPtr& xMap, FormulaCompiler::InitSymbols eWhat = FormulaCompiler::InitSymbols::INIT )
|
||||
{
|
||||
static OpCodeMapData aSymbolMap;
|
||||
static std::map<OUString, OpCodeMapData> aLocaleSymbolMap;
|
||||
static std::unordered_map<OUString, OpCodeMapData> aLocaleSymbolMap;
|
||||
std::unique_lock aGuard(aSymbolMap.maMtx);
|
||||
|
||||
if (comphelper::LibreOfficeKit::isActive())
|
||||
@@ -1050,23 +1050,25 @@ static bool lcl_fillNativeSymbols( FormulaCompiler::NonConstOpCodeMapPtr& xMap,
|
||||
return aLocaleSymbolMap.contains(language)
|
||||
&& bool(aLocaleSymbolMap[language].mxSymbolMap);
|
||||
}
|
||||
else if (eWhat == FormulaCompiler::InitSymbols::DESTROY)
|
||||
|
||||
auto& rEntry = aLocaleSymbolMap[language];
|
||||
if (eWhat == FormulaCompiler::InitSymbols::DESTROY)
|
||||
{
|
||||
aLocaleSymbolMap[language].mxSymbolMap.reset();
|
||||
rEntry.mxSymbolMap.reset();
|
||||
}
|
||||
else if (!aLocaleSymbolMap[language].mxSymbolMap)
|
||||
else if (!rEntry.mxSymbolMap)
|
||||
{
|
||||
// Core
|
||||
aLocaleSymbolMap[language].mxSymbolMap = std::make_shared<FormulaCompiler::OpCodeMap>(
|
||||
rEntry.mxSymbolMap = std::make_shared<FormulaCompiler::OpCodeMap>(
|
||||
ocLastOpcodeId + 1, true, FormulaGrammar::GRAM_NATIVE_UI);
|
||||
OpCodeList aOpCodeListSymbols(RID_STRLIST_FUNCTION_NAMES_SYMBOLS,
|
||||
aLocaleSymbolMap[language].mxSymbolMap);
|
||||
rEntry.mxSymbolMap);
|
||||
OpCodeList aOpCodeListNative(RID_STRLIST_FUNCTION_NAMES,
|
||||
aLocaleSymbolMap[language].mxSymbolMap);
|
||||
rEntry.mxSymbolMap);
|
||||
// No AddInMap for native core mapping.
|
||||
}
|
||||
|
||||
xMap = aLocaleSymbolMap[language].mxSymbolMap;
|
||||
xMap = rEntry.mxSymbolMap;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user