From 76b344c6fe1e0b66da040649f37f55215e0745a7 Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Tue, 24 Jun 2003 15:11:21 -0400 Subject: [PATCH] performance improvements --- Source/cmMacroCommand.cxx | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index fa013c7738..62d672441d 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -20,20 +20,19 @@ bool cmMacroFunctionBlocker:: IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf) { // record commands until we hit the ENDMACRO - // at the ENDMACRO call we shift gears and start looking for invocations - if(lff.m_Name == "ENDMACRO") - { - std::vector expandedArguments; - mf.ExpandArguments(lff.m_Arguments, expandedArguments); - if(!expandedArguments.empty() && (expandedArguments[0] == m_Args[0])) - { - m_Executing = true; - return true; - } - } - if (!m_Executing) { + // at the ENDMACRO call we shift gears and start looking for invocations + if(lff.m_Name == "ENDMACRO") + { + std::vector expandedArguments; + mf.ExpandArguments(lff.m_Arguments, expandedArguments); + if(!expandedArguments.empty() && (expandedArguments[0] == m_Args[0])) + { + m_Executing = true; + return true; + } + } // if it wasn't an endmacro and we are not executing then we must be // recording m_Functions.push_back(lff); @@ -63,10 +62,12 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf) } // Invoke all the functions that were collected in the block. + cmListFileFunction newLFF; for(unsigned int c = 0; c < m_Functions.size(); ++c) { // Replace the formal arguments and then invoke the command. - cmListFileFunction newLFF; + newLFF.m_Arguments.clear(); + newLFF.m_Arguments.reserve(m_Functions[c].m_Arguments.size()); newLFF.m_Name = m_Functions[c].m_Name; newLFF.m_FilePath = m_Functions[c].m_FilePath; newLFF.m_Line = m_Functions[c].m_Line;