From: Evan Martin Date: Wed, 9 Jan 2013 01:52:44 +0000 (-0800) Subject: depslog: track dead record count X-Git-Tag: v1.3.0~1^2~52^2~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e223be80b6d308d64674ec884df461fe5b8e42e6;p=platform%2Fupstream%2Fninja.git depslog: track dead record count --- diff --git a/src/deps_log.cc b/src/deps_log.cc index 5031515..b1ec009 100644 --- a/src/deps_log.cc +++ b/src/deps_log.cc @@ -171,8 +171,10 @@ bool DepsLog::Load(const string& path, State* state, string* err) { if (out_id >= (int)deps_.size()) deps_.resize(out_id + 1); - if (deps_[out_id]) + if (deps_[out_id]) { + ++dead_record_count_; delete deps_[out_id]; + } deps_[out_id] = deps; } else { StringPiece path(buf, size); diff --git a/src/deps_log.h b/src/deps_log.h index d763a1d..e32a6fe 100644 --- a/src/deps_log.h +++ b/src/deps_log.h @@ -61,6 +61,7 @@ struct State; /// wins, allowing updates to just be appended to the file. A separate /// repacking step can run occasionally to remove dead records. struct DepsLog { + DepsLog() : dead_record_count_(0) {} // Writing (build-time) interface. bool OpenForWrite(const string& path, string* err); @@ -89,6 +90,10 @@ struct DepsLog { // Write a node name record, assigning it an id. bool RecordId(Node* node); + /// Number of deps record read while loading the file that ended up + /// being unused (due to a latter entry superceding it). + int dead_record_count_; + FILE* file_; /// Maps id -> Node. vector nodes_;