Skip to content
Snippets Groups Projects
Commit 76b344c6 authored by Ken Martin's avatar Ken Martin
Browse files

performance improvements

parent 117f961a
No related branches found
No related tags found
No related merge requests found
......@@ -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")
if (!m_Executing)
{
std::vector<std::string> expandedArguments;
mf.ExpandArguments(lff.m_Arguments, expandedArguments);
if(!expandedArguments.empty() && (expandedArguments[0] == m_Args[0]))
// at the ENDMACRO call we shift gears and start looking for invocations
if(lff.m_Name == "ENDMACRO")
{
m_Executing = true;
return true;
std::vector<std::string> expandedArguments;
mf.ExpandArguments(lff.m_Arguments, expandedArguments);
if(!expandedArguments.empty() && (expandedArguments[0] == m_Args[0]))
{
m_Executing = true;
return true;
}
}
}
if (!m_Executing)
{
// 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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment