[Cmake-commits] CMake branch, next, updated. v3.5.2-1047-gf2f5d30
Rolf Eike Beer
eike at sf-mail.de
Wed Apr 20 17:33:46 EDT 2016
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via f2f5d3086d2eecec219e26740e0bcb556e3dd133 (commit)
via 068358e1edd4ed0c19a40f3be16edb64123f45ee (commit)
from 356a3f60095d1f5132f590833737fed4db766580 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f2f5d3086d2eecec219e26740e0bcb556e3dd133
commit f2f5d3086d2eecec219e26740e0bcb556e3dd133
Merge: 356a3f6 068358e
Author: Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Wed Apr 20 17:33:45 2016 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Apr 20 17:33:45 2016 -0400
Merge topic 'addcachedefinitions-convert' into next
068358e1 cmMakefile::AddCacheDefinition: avoid conversions between char* and string
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=068358e1edd4ed0c19a40f3be16edb64123f45ee
commit 068358e1edd4ed0c19a40f3be16edb64123f45ee
Author: Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Wed Apr 20 22:40:58 2016 +0200
Commit: Rolf Eike Beer <eike at sf-mail.de>
CommitDate: Wed Apr 20 23:33:17 2016 +0200
cmMakefile::AddCacheDefinition: avoid conversions between char* and string
Running the testsuite this function is entered more than 126,000 times. Reorder
the code flow so that a conversion from char* to std::string is only done when
the cache entry is a path one, which happens only ~50 times during the
testsuite.
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 3a56c2a..f01ff74 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -1824,10 +1824,11 @@ void cmMakefile::AddCacheDefinition(const std::string& name, const char* value,
cmState::CacheEntryType type,
bool force)
{
- bool haveVal = value ? true : false;
- std::string val = haveVal ? value : "";
const char* existingValue =
this->GetState()->GetInitializedCacheValue(name);
+ // must be outside the following if() to keep it alive long enough
+ std::string nvalue;
+
if(existingValue
&& (this->GetState()->GetCacheEntryType(name)
== cmState::UNINITIALIZED))
@@ -1836,15 +1837,16 @@ void cmMakefile::AddCacheDefinition(const std::string& name, const char* value,
// if it is a force, then use the value being passed in
if(!force)
{
- val = existingValue;
- haveVal = true;
+ value = existingValue;
}
if ( type == cmState::PATH || type == cmState::FILEPATH )
{
std::vector<std::string>::size_type cc;
std::vector<std::string> files;
- std::string nvalue = "";
- cmSystemTools::ExpandListArgument(val, files);
+ nvalue = value ? value : "";
+
+ cmSystemTools::ExpandListArgument(nvalue, files);
+ nvalue = "";
for ( cc = 0; cc < files.size(); cc ++ )
{
if(!cmSystemTools::IsOff(files[cc].c_str()))
@@ -1859,13 +1861,12 @@ void cmMakefile::AddCacheDefinition(const std::string& name, const char* value,
}
this->GetCMakeInstance()->AddCacheEntry(name, nvalue.c_str(), doc, type);
- val = this->GetState()->GetInitializedCacheValue(name);
- haveVal = true;
+ nvalue = this->GetState()->GetInitializedCacheValue(name);
+ value = nvalue.c_str();
}
}
- this->GetCMakeInstance()->AddCacheEntry(name, haveVal ? val.c_str() : 0,
- doc, type);
+ this->GetCMakeInstance()->AddCacheEntry(name, value, doc, type);
// if there was a definition then remove it
this->StateSnapshot.RemoveDefinition(name);
}
-----------------------------------------------------------------------
Summary of changes:
Source/cmMakefile.cxx | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list