From 7fdd3fb10d2527c93635d6a1fb72c32d25ab04e6 Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Mon, 9 Jan 2012 13:46:57 -0800 Subject: remove string copy while loading depfiles --- src/graph.cc | 5 ++--- src/util.cc | 1 + 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::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(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; -- cgit v0.12