summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2012-01-09 21:46:57 (GMT)
committerEvan Martin <martine@danga.com>2012-01-09 21:46:57 (GMT)
commit7fdd3fb10d2527c93635d6a1fb72c32d25ab04e6 (patch)
tree55314d92bba35e20223f3e4e9cf66bfb1bc8f6de /src
parenta5a97d2983c2e13b31acf8147a4cfbd634deda39 (diff)
downloadNinja-7fdd3fb10d2527c93635d6a1fb72c32d25ab04e6.zip
Ninja-7fdd3fb10d2527c93635d6a1fb72c32d25ab04e6.tar.gz
Ninja-7fdd3fb10d2527c93635d6a1fb72c32d25ab04e6.tar.bz2
remove string copy while loading depfiles
Diffstat (limited to 'src')
-rw-r--r--src/graph.cc5
-rw-r--r--src/util.cc1
2 files changed, 3 insertions, 3 deletions
diff --git a/src/graph.cc b/src/graph.cc
index 5c7507a..5320cfa 100644
--- a/src/graph.cc
+++ b/src/graph.cc
@@ -252,11 +252,10 @@ bool Edge::LoadDepFile(State* state, DiskInterface* disk_interface,
// Add all its in-edges.
for (vector<StringPiece>::iterator i = depfile.ins_.begin();
i != depfile.ins_.end(); ++i, ++implicit_dep) {
- string path(i->str_, i->len_);
- if (!CanonicalizePath(&path, err))
+ if (!CanonicalizePath(const_cast<char*>(i->str_), &i->len_, err))
return false;
- Node* node = state->GetNode(path);
+ Node* node = state->GetNode(*i);
*implicit_dep = node;
node->AddOutEdge(this);
diff --git a/src/util.cc b/src/util.cc
index 22bb81f..dbf7566 100644
--- a/src/util.cc
+++ b/src/util.cc
@@ -77,6 +77,7 @@ void Error(const char* msg, ...) {
}
bool CanonicalizePath(string* path, string* err) {
+ METRIC_RECORD("canonicalize str");
int len = path->size();
if (!CanonicalizePath(&(*path)[0], &len, err))
return false;